ProxyPass is unable to provide correct PATH_INFO
as it is not aware of file path (while SetHandler is).
As we can extract PATH_INFO from PATH_TRANSLATED,
we also need to check if present in SCRIPT_NAME
and remove it.
After applying this patch.
With mod_php
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
_SERVER["SCRIPT_NAME"] /info.php
_SERVER["PATH_INFO"] /foor/bar
_SERVER["PHP_SELF"] /info.php/foo/bar
_SERVER["QUERY_STRING"] q=1
With mod_proxy_fcgi + SetHandler
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
_SERVER["SCRIPT_NAME"] /info.php
_SERVER["PATH_INFO"] /foo/bar
_SERVER["PHP_SELF"] /info.php/foo/bar
_SERVER["QUERY_STRING"] q=1
With mod_proxy_fcgi + ProxyPass
_SERVER["REQUEST_URI"] /info.php/foo/bar?q=1
_SERVER["SCRIPT_NAME"] /info.php
_SERVER["PATH_INFO"] /foo/bar
_SERVER["PHP_SELF"] /info.php/foo/bar
_SERVER["QUERY_STRING"] q=1
* PHP-5.5:
remove the NEWS entry for the reverted fpm fix
remove the NEWS entry for the reverted fpm fix
Revert "Fix Bug #67530 error_log=syslog ignored"
Apache 2.4.10+ will allow the following:
```
<FilesMatch \.php$>
SetHandler proxy:fcgi://localhost:9000
</FilesMatch>
```
This is much easier than using `ProxyPassMatch` (which prevents rewriting and other stuff) and rewrites (which are a bag of hurt because when combined with user-land `.htaccess` rewrites, there's always rewrite loops, prefix breakage etc (I've tried, for weeks).
It's basically the future of using Apache (via `mod_proxy_fcgi`) together with PHP-FPM. It's also available for older versions as a standalone module, very easy to install: https://gist.github.com/progandy/6ed4eeea60f6277c3e39
However, the two bits of code this commit deletes interfere with that. They both cover CGI-only mode and were copied from that SAPI into the FPM source. See e.g. https://bugs.php.net/bug.php?id=47042
The first deleted part mangled `SCRIPT_NAME` if something like
```
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) index.php/$1 [L]
```
is used (i.e. rewriting to `PATH_INFO`. The second part drops `PATH_INFO` if there was a `REDIRECT_URL` (with CGI mode, `SCRIPT_FILENAME` in Apache is the path to the PHP binary, and `PATH_INFO` contains the name of the script to run).
Clearly, neither applies in the case of FPM, so both are safe to delete.
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
This makes it possible to leave the envoronment as is on startup and
pass all the variables to the workers.
The default value of clear_env is "yes", preserving previous behaviour.
Patch by Paul Annesley.
* 'master' of https://git.php.net/repository/php-src:
Improved performance of func_get_args() by eliminating useless copying
fix limitation of upload size == (U)INT_MAX in CGI
Link to more readmes
test commit
Update NEWS
Fixed bug #65950 Field name truncation if the field name is bigger than 32 characters