php - 使用 Apache+mod_FastCGI 设置 PHPFPM

标签 php apache fastcgi

我最近接管了一个运行 PHP 和 Apache 的 Web 服务器。 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。

提前致谢, 杰森

最佳答案

您正在查看错误的参数。在这种情况下,FastCGI 使用套接字与 PHP-FPM 进行通信。您将看到在 PHP-FPM 配置中配置的套接字。

因此,重要的不是 FastCGIExternalServer 的第一个参数,而是第二个参数。第一个只是为了愚弄 Apache 。

所以处理程序发生的事情是,为 php 创建一个处理程序,为该处理程序创建一个操作,该路径被别名。完成此操作后,FastCGI 可以将该路径指向套接字。

在 Apache 2.4 中使用 mod_proxy_fcgi 会更好。

干杯, 约瑟夫

关于php - 使用 Apache+mod_FastCGI 设置 PHPFPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136236/

相关文章:

php - 获取 WooCommerce 属性值 (url) 以将其用作 href 链接

javascript - jQuery 自定义复选框 + 隐藏 html 复选框

php - 当 url 指向现有文件夹(无尾部斜杠)时如何重定向到 404。 HAproxy 或 mod-rewrite 相关

fastcgi - 如何 ping FastCGI 服务器?

php - php中删除表记录

php - Symfony 编码标准在类型转换后是否需要保留空间?

java - 在 java 中使用 Apache 保存目录结构

ruby-on-rails - 如何让 Rails、SSL 和 Apache 发挥良好的作用?

django - 类 'psycopg2.InterfaceError' : connection already closed

php - 在 Ubuntu 中使用 Foreman 在本地运行 Heroku PHP 项目时权限不正确