我最近接手了一个运行PHP和Apache的WebServer。 PHP目前通过Apache的mod_fastcgi使用PHPFPM。一切都运行良好,但在我的研究中,为了确保我理解实现的内部和外部,我遇到了令人费解的配置。在Apache WebServer上,使用以下内容:
ScriptAlias /php-cgi "/usr/local/bin/php-cgi"
AddHandler php-fastcgi .php
Action php-fastcgi /php-cgi
FastCGIExternalServer /usr/local/bin/php-cgi -socket /tmp/php-fpm.sock -idle-timeout 60 -pass-header Authorization
现在,如上所述,上述配置工作正常。但似乎这种配置使用的是两种解决方案 - PHP-CGI解决方案和PHP-FPM解决方案。根据我的阅读和理解,PHP-FPM提供了PHP-CGI的替代品,而不是与它一起运行的东西。因此,我认为应该采用以下配置:
ScriptAlias /php-cgi "/usr/local/sbin/php-fpm"
AddHandler php-fastcgi .php
Action php-fastcgi /php-cgi
FastCGIExternalServer /usr/local/sbin/php-fpm -socket /tmp/php-fpm.sock -idle-timeout 60 -pass-header Authorization
第二种配置(使用PHP-FPM)也有效。我没有注意到两者之间的任何事情,但它让我担心一个或另一个实际上是错误的。
有人会介意分享他们的想法,发现或回答哪些配置已经到位?当我应该运行php-fpm时,我不喜欢运行php-cgi的想法。
提前谢谢, 杰森
答案 0 :(得分:2)
您正在查看错误的参数。在这种情况下,FastCGI使用套接字与PHP-FPM进行通信。您将看到在PHP-FPM配置中配置的套接字。
所以这不是FastCGIExternalServer的第一个重要参数,而是第二个参数。第一个是愚弄Apache。
所以处理程序发生的事情是,为php创建一个Handler,为该Handler创建一个Action,该路径是别名的。完成此操作后,FastCGI可以将该路径指向套接字。
在Apache 2.4中使用mod_proxy_fcgi会更好。
干杯, 约瑟夫