我正在使用两个容器开发我的应用程序:阿帕奇和php-fpm。
Apache 处理请求,并将 PHP 执行委托给其 vhost 中的 php-fpm 容器:
<FilesMatch .php$>
SetHandler "proxy:fcgi://myapp-php-fpm:9000"
</FilesMatch>
这两个容器共享一个包含应用程序代码的卷。
该卷的位置在每个容器中都是不同的:
- apache 将应用程序代码卷挂载在
/home/wwwdata/myapp
- php-fpm 将应用程序代码卷挂载在
/var/task
我如何更改 Apache 发送到 php-fpm 容器的脚本路径,以便它与 php-fpm 容器中卷的安装位置相匹配?
SCRIPT_FILENAME
我可以通过设置和在 nginx 中做到这一点DOCUMENT_ROOT
:
location ~ ^/index\.php(/|$) {
fastcgi_pass myapp-php-fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/task/$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/task;
internal;
}
但我无法在 Apache 中复制此行为。
答案1
用于ProxyFCGISetEnvIf
设置SCRIPT_FILENAME
:
<FilesMatch .php$>
ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/var/task%{reqenv:SCRIPT_NAME}"
SetHandler "proxy:fcgi://myapp-php-fpm:9000"
</FilesMatch>