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

Доступ запрещен только для файлов PHP

Я получаю сообщение об ошибке 403 Access Denied от Apache каждый раз, когда пытаюсь получить доступ к файлу PHP. Файлы HTML и текстовые файлы работают нормально. Я играл со всеми возможными комбинациями разрешений для файлов PHP, которые я мог придумать, от 644 до 777. Ничего не меняет.

Я также играл с разрешениями на оболочку FCGI и родительскую папку. С помощью o + x (777, 775, 773, 771) я получаю это в браузере:

Доступ запрещен!

У вас нет разрешения на доступ к запрошенному объекту. Он либо защищен от чтения, либо не читается сервером.

… И это в журнале ошибок vhost:

клиент отклонен конфигурацией сервера: / srv / www / hostname / fcgid-bin / php-fcgid-wrapper

С o-x (776, 774, 772, 770 или ниже) я получаю это в браузере:

Запрещено

У вас нет разрешения на доступ к /fcgid-bin/php-fcgid-wrapper/index.php на этом сервере.

Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 403 Forbidden.

… И это в журнале:

(13) В доступе отказано: доступ к /fcgid-bin/php-fcgid-wrapper/index.php запрещен

Это действительно ошеломляет меня, видя, как моя установка работала нормально, пока я не начал получать это, и я не знаю, что я мог бы сделать, чтобы это изменить. /usr/bin/php-cgi и оболочка нормально работают с одними и теми же входными файлами при прямом вызове.

Вот мой конфиг vhost:

<VirtualHost *:80>
    ServerAdmin admin@hostname.com
    DocumentRoot "/srv/www/hostname/public/"
    ServerName hostname.com
    ServerAlias www.hostname.com
    SuexecUserGroup hostname hostname
    ErrorLog "/srv/www/hostname/logs/error.log"
    LogLevel debug
    CustomLog "/srv/www/hostname/logs/access.log" combined

    <Directory /srv/www/hostname/public>
        Order allow,deny
        Allow from all
    </Directory>

    # http://www.linode.com/forums/viewtopic.php?t=2982
    <IfModule !mod_php5.c>
    <IfModule !mod_php5_filter.c>
    <IfModule !mod_php5_hooks.c>
    <IfModule mod_actions.c>
    <IfModule mod_alias.c>
    <IfModule mod_mime.c>
    <IfModule mod_fcgid.c>
        AddHandler php-fcgi .php
        Action php-fcgi /fcgid-bin/php-fcgid-wrapper
        Alias /fcgid-bin/ /srv/www/hostname/fcgid-bin/

        <Location /fcgid-bin/>
            SetHandler fcgid-script
            Options +ExecCGI
        </Location>

        ReWriteEngine On
        ReWriteRule ^/fcgid-bin/[^/]*$ / [PT]
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
    </IfModule>
</VirtualHost>
<Directory /srv/www/hostname/public>
    Order allow,deny
    Allow from all
</Directory>

Это не включает /srv/www/hostname/fcgid-bin/; при условии, что нет Allow применительно к нему в другом месте вашей конфигурации, это проблема. Вам нужно будет Allow доступ к этому месту.

У меня была аналогичная ошибка, за исключением того, что моя была связана с отсутствием

Options ExecCGI

строка из каталога, в котором были мои скрипты (в подпапке виртуального сервера), поэтому файлы html загружались нормально, но файлы php выдавали 403 с.