Debian apache2 没有执行 php 脚本,而是显示源代码

Debian apache2 没有执行 php 脚本,而是显示源代码

我知道这可能是网上讨论最多的话题,我确实在这里和 stackexchange 上搜索过,并尝试了各种答案,但似乎都没有对我有用,这就是我发布此帖子的原因。

我有一个带有 LAMP 堆栈的 Debian,最近必须将 php 从 5.4 升级到 5.6(最新版本)。

我开始删除旧版本,如下所示:

a2dismod php5

sudo apt-get --remove --purge libapache2-mod-php5filter libapache2-mod-php5 libphp5-embed php-pear php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-mcrypt php5-mysql

将以下内容添加到我的/etc/apt/sources.list文件中:

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all
deb http://packages.dotdeb.org wheezy-php56-zts all
deb-src http://packages.dotdeb.org wheezy-php56-zts all

并运行以下命令:

wget https://www.dotdeb.org/dotdeb.gpg
sudo apt-key add dotdeb.gpg
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libapache2-mod-php5 php-pear php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-mcrypt php5-mysql php5-mysqlnd

然后我使用此命令启用了 php5 a2enmod php5,并使用此命令重新启动了 apache2service apache2 restart

当我访问网站上的某个 PHP 脚本时,我看到了源代码,但该脚本并未执行。

在服务器上,我可以看到PHP5.6已正确安装:

root@server:~# php -v
PHP 5.6.18-1~dotdeb+zts+7.1 (cli) (built: Feb  6 2016 23:39:42) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

并且我可以看到 apache2 中启用了 PHP5 模块:

在此处输入图片描述

这些文件的内容如下:

我甚至尝试重启整个服务器,但毫无效果。我检查了一下/var/log/apache2/error.log,没有发现任何错误。我看到的只有:

[Tue Feb 09 12:52:09 2016] [notice] Digest: generating secret for digest authentication ...
[Tue Feb 09 12:52:09 2016] [notice] Digest: done
[Tue Feb 09 12:52:09 2016] [notice] Apache/2.2.22 (Debian) mod_ssl/2.2.22 OpenSSL/1.0.1e configured -- resuming normal operations

我使用 apache2 中的 VirtualHost 来为网站提供服务。这是我的条目:

<VirtualHost *:80>

    ServerAdmin [email protected]
    ServerName www.mydomain.com
    DocumentRoot /home/setup/public_html

    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>

    <Directory /home/setup/public_html/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

</VirtualHost>

知道为什么 PHP 脚本没有执行吗?我遗漏了什么?任何帮助都将不胜感激。

答案1

好的,我已经修复了。

我已删除以下内容:

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

/etc/apache2/mods-enabled/php5.conf并重新启动 apache,PHP 现在可以工作了。

相关内容