Файлы PHP загружаются, а не выполняются в UserDir на Apache
Мы запускаем веб-сервер, используя Debian 6.0.3 с Apache 2, недавно мы обновили Debian 5 до 6. С тех пор скрипты php в пользовательских каталогах (использующих mod_userdir) перестали работать, они загружаются, а не выполняются.
Существует также веб-сайт, использующий php за пределами пользовательских каталогов, и он продолжает работать нормально, поэтому PHP обычно работает на сервере. Я протестировал его с несколькими PHP-файлами, среди которых был простой файл phpinfo, который отлично работает на основном сайте, но просто загружается при копировании в один из пользовательских каталогов.
Файлы php и директория, содержащая их, являются исполняемыми для всех. Опция в Apache php5.conf, которая по умолчанию отключает PHP в пользовательских каталогах, закомментирована, поэтому php5.ini выглядит следующим образом:
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# 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_value engine Off
# </Directory>
#</IfModule>
</IfModule>
Мы перезапустили Apache после изменения этого. Теперь у меня заканчиваются идеи, в чем может быть проблема, и я не знаю, как я мог бы реально определить, какая проблема препятствует выполнению этих php-файлов. Любые идеи о том, как я могу решить это?
Обновить:
Как ни странно, PHP, кажется, отлично работает в подпапках пользовательских каталогов, поэтому, если я скопирую файл PHP из /home/user/public_html/
в /home/user/public_html/test/
это внезапно работает.
2 ответа
Для начала попробуйте
egrep -ir "(php_admin_value|mod_userdir|public_html)" /etc/apache2
и увидеть все возможные места, где PHP для пользовательских каталогов может быть отключен. Поменяйте где нужно. Перезапустите Apache, наслаждайтесь.
Я испытал ту же проблему и решил ее, установив
apt-get install libapache2-mod-php5