Я знаю, что это, вероятно, самая обсуждаемая тема в Интернете, я искал здесь и stackexchange и пробовал разные ответы, но ни один из них, похоже, не работает для меня, поэтому я публикую это.
У меня есть Debian со стеком LAMP, и недавно мне пришлось обновить 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
и перезапустил apache2 с помощью этой команды service 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
И я вижу, что модуль PHP5 включен в apache2:
Вот содержимое этих файлов:
Я даже попробовал перезагрузить весь сервер, не помогает. Я проверил /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
Я использую VirtualHost в apache2 для обслуживания сайта. Это моя запись:
<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 теперь работает.