Ranter
Join devRant
Do all the things like
++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatar
Sign Up
Pipeless API
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple API
Learn More
Comments
-
Auhrii52289d@donkulator I finally figured it out in the end, at least! I had to jank my way around http_response_code() entirely and set the REDIRECT_STATUS parameter in fastcgi.conf to $status
This let me get the response code from Nginx using $_SERVER["REDIRECT_STATUS"] in PHP, with the caveat that 200 (OK) returns as 000
It's so janky, but it works -
IntrusionCM14956289dAs someone who understands what you did in your last comment ...
... And partially what you try to achieve...
What the fuck is your admin doing? -
Auhrii52289d@IntrusionCM I regret to inform you that I am my own admin, and I have no idea what the fuck I'm doing
-
IntrusionCM14956289d@Auhrii
https://php.net/manual/en/...
What you're doing is simply put a violation and abusal of an old / ancient variable.
If I understand you correctly, you have
NGINX in front of PHP
Client calls Website
Client is a special kind of retard
NGINX redirects to an error page
NGINX calls the PHP script
Now you want to know what "Client is a special kind of retard" call created as a status code?
As in "redirect to the error page AND add via header the previous status code" as an example to solve it? -
Auhrii52289d@IntrusionCM Yeah, pretty much. I'd have assumed that http_response_code() would give me, y'know, the *actual response code* and not just 200 by default. Nginx knows what the response code is and it can evidently already pass additional information to PHP, but in this case it doesn't.
The error page redirect always worked fine, no problems there, it's just that PHP is a dumbass and is configured to assume "oh, I'm running? must be 200 OK" by default. -
IntrusionCM14956289d@Auhrii
http://nginx.org/r/...
http://nginx.org/en/docs/...
You're thinking wrong, though it depends largely on how NGINX is configured.
What usually happens with PHP FPM CGI is the following:
Website - NGINX - resolve to location
...
parse fastcgi parameters
call CGI binary with fastcgi parameters
There is no HTTP code involved per se.
What you did with your modification is to include the $status variable in the fastcgi parameters, which should be the last http status code.
000 as there is no status code when there is no error - the binary just gets called, there is no http request happening.
https://gist.github.com/kerns/...
Here is one gist I found which is an example of how to create an error page with query parameters to pass the status code.
Less hacky.
Alternative would be an error page with a proxy pass and setting a header.
Related Rants
Why can no-one, not one single solitary fucker, on StackOverflow get it through their thick skull that when I call PHP's http_response_code() or try to get $_SERVER["REDIRECT_STATUS"], I want the response code from Nginx? No, not Apache. No, I don't want to pass a status code FROM PHP TO NGINX, I want the response code. FROM Nginx. TO PHP.
In what fucking universe does PHP know more about the response code than Nginx? It doesn't. Nginx knows the response code, because that's the fucker that redirected to the error page. I want the error. Passed to the page. From Nginx. To PHP.
NO, http_response_code() DOES NOT MAGICALLY FUCKING WORK, IT RETURNS 200 BY DEFAUL- fuck it.
rant
nginx
php
stackoverflow