请允许我声明我是FastCGI的新手.我的OS X机器上有MAMP的Apache.默认的
PHP处理程序是Apache Handler 2.0(libphp5.so).我想改为FastCGI并按照这里的答案:
How to configure Apache to run PHP as FastCGI on Ubuntu 12.04 via terminal?
我在httpd.conf的末尾添加了以下内容:
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
Order allow,deny
Allow from all
但是,正如您所看到的,FastCgiExternalServer已被注释掉.相反,我不得不使用FastCgiServer,否则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”: connect() failed
[Fri May 06 23:25:22 2016] [error] [client ::1] FastCGI: incomplete headers (0 bytes) received from server “/Applications/MAMP/fcgi-bin/php5.fcgi”
但/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有效?