Portál AbcLinuxu, 13. května 2025 22:20
Zdravím,
narazil jsem problem v této kombinaci, php-fpm ma pro kazde web vlastni pool a bezi pod svym uzivatelem, virtualhost:
<IfModule mod_proxy_fcgi.c>
ProxyPassMatch ^/(.*\.php[345]?(/.*)?)$ "fcgi://127.0.0.1:9000/data/www/user1/htdoc/$1"
</IfModule>
Pri otevreni www s konkretnim soubor napr. test.php se test.php zpracuje, ale uplne ignoruje htaccess a vse v nem, apache posle bez vahani cely request do php-fpm, pokud soubor test.php neexistuje tak to hlaskou file not found.
V dokumentaci apache jsem nasel moznost toto ovlitnit pomoci RewriteOptions InheritBefore tak aby se zpracoval i ten htacces a pak teprve poslat php do fpm, takto a uplne vyhodit ProxyPassMatch.
<Directory /data/www/user1/htdoc/>
<IfModule mod_proxy_fcgi.c>
DirectoryIndex /index.php
RewriteEngine On
RewriteBase /
RewriteOptions InheritBefore
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^([^\.]+\.php)$ fcgi://127.0.0.1:9000/data/www/user1/htdoc//$1 [L,P]
</IfModule>
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Tohle vypadalo slibne, web funguje, php se zpracovana, ale z nejakeho zatim nepochopitelneho duvodu se na webu prestal fungovat login formular (modalni okno otevreni v js zpracovane ajaxem, pri klidnuti na prihlasit se generuje request nekam do podadresare frameworku).
Neresil jste nekdo podobny problem s 2.4 apache a mod_proxy_fcgi + php-fpm.
fahacz
Httpd cte .htaccess az kdyz je to treba, Pomoci ProxyPassMatch mu ale rikas, ze chces pozadavek presmerovat jinemu procesu. Tim padem se .htaccess neotevira.
Melo by to fungovat pokud mist ProxyPassMatch pouzijes SetHandler:
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.