Apache-2.2

Debian apache2 沒有執行 php 腳本,而是顯示原始碼

  • February 9, 2016

我知道這可能是網上討論最多的話題,我確實在這裡搜尋和 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 support@mydomain.com
   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 腳本沒有被執行嗎?我錯過了什麼?任何幫助將不勝感激。

好的,我已經修好了。

我刪除了以下內容:

# 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 現在可以工作了。

引用自:https://serverfault.com/questions/754975