PHP-FPM 与 Apache 2.2.22 和 Ubuntu 12.10 - 500 错误,或返回文本(未执行)

PHP-FPM 与 Apache 2.2.22 和 Ubuntu 12.10 - 500 错误,或返回文本(未执行)

我正在关注本教程尝试在我的 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”的实例。

希望这可以帮助!

相关内容