php7.0-fpm 无法在 Ubuntu-16.04 上与 apache2.4 一起使用

php7.0-fpm 无法在 Ubuntu-16.04 上与 apache2.4 一起使用

我使用 Ubuntu-16.04 搭建 apache 服务器,使用 php-fpm 处理 php 文件,我遵循这个帖子。配置后,我的 apache2 和 php7.0-fpm 服务正确重启。但是当我浏览 php 文件时,我得到的是一个纯文本文件。似乎没有 php cgi 来处理 php 文件。我怎么了?

我是 Apache 新手。所以我不知道该粘贴什么配置。我会根据您的回答发布必要的配置。谢谢!


我的安装步骤:

安装 PHP 和 PHP-fpm:

sudo apt-get install php libapache2-mod-php
sudo apt-get install libapache2-mod-fastcgi php7.0-fpm

启用 fastcgi 模式

sudo a2dismod php mpm_prefork
sudo a2enmod actions fastcgi alias mpm_worker

为 php7.0-fpm 创建全局配置

sudo vim /etc/apache2/conf-available/php7.0-fpm.conf

并在配置中写入:

<IfModule mod_fastcgi.c>
    AddHandler php7.0-fcgi .php
    Action php7.0.fcgi /php7.0.fcgi
    Alias /php7.0-fcgi /usr/lib/cgi-bin/php7.0.fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php7.0.fcgi -socket /var/run/php7.0.fpm.sock -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
</IfModule>

然后启用 php7.0-fpm 配置

sudo a2enconf php7.0-fpm

重新启动 apache 和 fpm

sudo service apache2 restart && sudo service php7.0-fpm restart

编辑/var/www/html/index.php

<?php
phpinfo();
?>

然后浏览http://localhost/index.php,但得到的是文件内容而不是打印的页面。

答案1

您的配置有点不对。尝试以下操作:

    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
    <IfModule mod_fastcgi.c>
        AddHandler php7-fcgi .php
        Action php7-fcgi /php7-fcgi
        Alias /php7-fcgi /usr/lib/cgi-bin/php7-fcgi
        FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi -socket /var/run/php/php7.0-fpm.sock -pass-header Authorization
    </IfModule>

我在这里添加了它,并且效果很好:/etc/apache2/sites-available/000-default.conf

答案2

我在 Ubuntu 16.04 中安装 php7.0 时遇到了类似的问题。不要责怪我,但我认为问题与权限有关。我将 www-data 设为 /var/www 文件夹中所有文件的所有者和组,并将 chmod 权限更改为 drwxrwxr-x。这只是在我自己的开发服务器上,我在这方面没有那么多经验,所以使用时请自担风险。不过,它们可以很容易地撤消,也可以很容易地更改。

相关内容