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

Apache не анализирует PHP на VHOST, пока работает по умолчанию

Я установил Debian 6 VPS для размещения нескольких небольших сайтов, и он прекрасно работает для одного из них по умолчанию.

Затем я создал нового пользователя, скопировал / вставил файл vhost по умолчанию и включил его с помощью a2ensite и только скорректированные пути для этого нового пользователя, но по какой-то причине файлы PHP не анализируются, и отображается только их источник.

Итак, резюмируем: идентичные настройки vhost, модуль PHP включен, короткие теги включены (но не используются)

Чтобы прояснить: я искал и нашел кучу «решений» здесь и в Интернете, но ни одно из них, похоже, не помогло мне.

Только что заметил эту строку в логах:

PHP Fatal error:  Unknown: Failed opening required '/home/tester/public_html/index.php' (include_path='.:/usr/share/php:/usr/share/pear') in Unknown on line 0

[Thu Mar 21 20:28:55 2013] [error] [client xxx.xxx.xxx.xxx] PHP Warning:  Unknown: open_basedir restriction in effect. File(/home/tester/public_html/index.php) is not within the allowed path(s): (/home/user/public_html:/tmp) in Unknown on line 0

И это содержимое моего файла vhost по умолчанию:

<VirtualHost *:80>

        ServerAdmin user@mail.com
        ServerName domain.com
        ServerAlias www.domain.com
        DocumentRoot /home/user/public_html/
        ErrorLog /home/user/logs/error.log
        CustomLog /home/user/logs/access.log combined

        <Directory "/home/user/public_html">
        AllowOverride All
                php_admin_flag engine on
                php_admin_value open_basedir "/home/user/public_html:/tmp"
        </Directory>

</VirtualHost>

Может ли PHP open_basedir быть виновником этой проблемы?

Ура! Все заработало!

Проверены настройки конфигурации модуля PHP Apache в /etc/apache2/mods-enabled/php5.conf:

<FilesMatch ".+\.ph(p[345]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
    SetHandler application/x-httpd-php-source
    # Deny access to raw php sources by default
    # To re-enable it's recommended to enable access to the files
    # only in specific virtual host or directory
    Order Deny,Allow
    Deny from all
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
    Order Deny,Allow
    Deny from all
</FilesMatch>

# 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_value engine Off
    </Directory>
</IfModule>

Здесь четко сказано:

# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.)

Я так и сделал, затем перезапустил Apache и вуаля:

Да, open_basedir может быть корнем этой проблемы. У вас должен быть путь / home / tester / public_html / и / home / user.

Похоже, он пропускает синтаксический анализ PHP и не блокирует доступ к странице, как я жестко - я нашел аналогичную проблему здесь: https://bbs.archlinux.org/viewtopic.php?id=57877 .

/ Первая версия с запросом разъяснений удалена как не соответствующая политикам ServerFault, как мне сказали. /