让我声明一下我是 FastCGI 的新手。我的 OS X 机器上有 MAMP 的 Apache。默认 PHP 处理程序是Apache Handler 2.0
(libphp5.so)。我想更改FastCGI
并遵循此处的答案:如何配置 Apache 以通过终端在 Ubuntu 12.04 上将 PHP 作为 FastCGI 运行?
我在 httpd.conf 的末尾添加了以下内容:
<IfModule mod_fastcgi.c>
AddHandler php5.fcgi .php
Action php5.fcgi /php5.fcgi
Alias /php5.fcgi /Applications/MAMP/fcgi-bin/php5.fcgi
FastCgiServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
#FastCgiExternalServer /Applications/MAMP/fcgi-bin/php5.fcgi -socket /Applications/MAMP/tmp/php-fcgi/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory /Applications/MAMP/fcgi-bin>
Order allow,deny
Allow from all
</Directory>
</IfModule>
但是,如您所见,FastCgiExternalServer
被注释掉了。相反,我必须使用FastCgiServer
cause 否则 Apache 在尝试请求页面时给我以下错误:
[Fri May 06 23:25:22 2016] [error] [client ::1] (2)No such file or directory: FastCGI: failed to connect to server "/Applications/MAMP/fcgi-bin/php5.fcgi" : 连接失败
[2016 年 5 月 6 日星期五 23:25:22] [错误] [客户端 ::1] FastCGI:从服务器“/Applications/MAMP/fcgi-bin/php5.fcgi”收到不完整的标头(0 字节)
但是/Applications/MAMP/fcgi-bin/php5.fcgi
存在,其内容是:
#!/bin/bash
PHP_CGI=/Applications/MAMP/bin/php/php5.6.2/bin/php-cgi
exec $PHP_CGI
FastCgiServer
和FastCgiExternalServer
为什么FastCgiExternalServer
在我的情况下不起作用但起作用之间有什么区别FastCgiServer
?