我正在关注本教程尝试在我的 LAMP 堆栈上安装 PHP-FPM。
我的配置/etc/apache2/sites-available/default
包含(按照指南)
<IfModule mod_fastcgi.c>
Alias /php5.fastcgi /var/www/fastcgi/php5.fastcgi
AddHandler php-script .php
FastCGIExternalServer /var/www/fastcgi/php5.fastcgi -socket /var/run/php-fpm.sock
Action php-script /php5.fastcgi virtual
# This part is not necessary to get it to work, but it stops anything else from being
# accessed from it by mistake or maliciously.
<Directory "/var/www/fastcgi">
Order allow,deny
<Files "php5.fastcgi">
Order deny,allow
</Files>
</Directory>
</IfModule>
这导致了 500 个错误。我检查了 Apache 日志并看到:
(111)连接被拒绝:FastCGI:无法连接到服务器“/usr/lib/cgi-bin/php5-fcgi”:connect()失败FastCGIExternalServer /var/www/fastcgi/php5.fastcgi -socket /var/run/php-fpm.sock
FastCGI:从服务器“/usr/lib/cgi-bin/php5-fcgi”接收到不完整的标头(0 字节)
我检查并意识到我/etc/php5/fpm/pool.d/www.conf
正在监听不同的套接字位置(来自教程),所以我将 apache 配置更新为:
FastCGIExternalServer /var/www/fastcgi/php5.fastcgi -socket /var/run/php5-fpm.sock
但是现在访问 php5 脚本只会显示纯文本。
我不确定我哪里出了问题,有人能指出我解决问题的正确方向吗?不幸的是,我发现的所有内容都是面向 NGINX 的(或者用户完全切换到了 NGINX!)我目前有点依赖 Apache,因为我依赖 .htaccess 来进行 wordpress 和永久链接重写等。
在此先表达无限谢意。
答案1
尝试在 httpd.conf 中的 FastCgiExternalServer 中使用参数 -idle-timeout 和 -appConnTimeout。查看此内容对于语法
答案2
万一有帮助...我遇到了系统性的 500 内部错误,不得不费很大劲才能php-fpm与...合作阿帕奇和IPS配置在Ubuntu 14.04 LTS Trusty,构建Falko 教程
这是我的工作 PHP-FPM 配置:
/etc/php5/fpm/pool.d/www.conf
user = www-data group = www-data listen.owner = www-data listen.group = www-data listen.mode = 0660 listen = /var/run/php5-fpm.sock pm = dynamic pm.max_children = 10 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6 pm.max_requests = 2000 pm.status_path = /fpm_status?full chdir = /
/etc/php5/fpm/php-fpm.conf
pid = /var/run/php5-fpm.pid error_log = /var/log/php5-fpm.log include=/etc/php5/fpm/pool.d/*.conf
/etc/apache2/conf-enabled/php-fpm.conf
<IfModule mod_fastcgi.c> Alias /php-fcgi /usr/lib/cgi-bin/php5 AddHandler php .php Action php /php-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600 <Directory /usr/lib/cgi-bin> AllowOverride All Options +ExecCGI +FollowSymLinks Require all granted </Directory> </IfModule>
我不得不
chmod 666 /var/run/php5-fpm.sock
最后,但这是特定于 Ispconfig,当我将使用 PHP-FPM 的网站设置到 IspConfig 中时,它会在其启用站点的 vhost 中写入以下几行:
Alias /php5-fcgi ALIAS_PATH&NAME FastCgiExternalServer ALIAS_PATH&NAME -idle-timeout 300 -host 127.0.0.1:9016 -pass-header Authorization</code>
我必须改为
-host 127.0.0.1:9016
,-socket /var/run/php5-fpm.sock
然后它才能起作用。
只是不知道 IspConfig 从哪里获取错误的信息。
答案3
我已经解决了这个问题,在 Ispconfig 上使用 ubuntu 14.XX、Apache 和 PHP-FPM 仅使用这个:
chmod 666 /var/lib/php5-fpm/web104.sock
其中 web104 是托管“web104”的实例。
希望这可以帮助!