Назад | Перейти на главную страницу

Файлы 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/ это вдруг срабатывает.

Для начала попробуйте

egrep -ir "(php_admin_value|mod_userdir|public_html)" /etc/apache2

и посмотрите все возможные места, где PHP для пользовательских каталогов может быть отключен. При необходимости измените. Перезагрузите Apache, наслаждайтесь.

У меня возникла та же проблема, и я решил ее, установив

apt-get install libapache2-mod-php5