403 Запрещено с php в рабочем режиме. Только для php файлов из браузера

Прежде всего позвольте мне начать с того, что да, я искал это в Google и, в частности, в stackru, я нашел много ответов и перепробовал их все. На данный момент я считаю, что мой единственный ресурс - это публикация вопроса самостоятельно, даже если сценарий звучит многократно, будьте любезны, постарайтесь помочь.

Ситуация довольно проста, на настольном компьютере Ubuntu 10.04 я настроил apache через Synaptic и Php5 в соответствии с этим руководством и его дополнительным описанием здесь. На данный момент, если я иду в командной строке и вызываю скрипт php, он работает, например:

  php test.php

выводит мой привет мир без проблем. Но если я перейду к firefox и укажу на test.php, он покажет ошибку 403 Forbidden...

Я изменил владельца для /var/, /var/www/ и /var/www/test.php на каждую переменную, которую я могу себе представить (www-data [apache запускается как этот пользователь], purefan [мой обычный пользователь], root) это не имеет значения, я также несколько раз менял права доступа 777, 0777 (просто для безопасности), 644, 755, без изменений. из CLI я получил phpinfo в файл и добавил его сюда.

Если я не ошибаюсь, проблема возникает, когда Apache вызывает интерпретатор php, например, когда я захожу на http://localhost/index.php он показывает значение по умолчанию для Apache: "Это работает!" страницы, но если я добавлю php-контент в этот файл, он просто игнорируется, но ошибки не отображается (также проверяются журнал ошибок и системный журнал).

Поэтому, пожалуйста, если у вас есть какие-либо предложения, дайте мне знать, что это не жизнь или мёртвая вещь, но очень хотелось бы использовать рабочий вместо префорка.

Спасибо за ваше время

4 ответа

Решение

У меня была точно такая же проблема... сначала я успешно установил apache2 с работающим mpm и php5 с fastcgi под виртуальной машиной... но когда я попробовал (используя точно такой же процесс) на моем рабочем хосте, он дал мне запрещенные ошибки.

После долгих поисков у меня наконец-то все заработало. Здесь вы можете найти шаги, которые я сделал, чтобы заставить его работать:

Это пакеты, которые я установил, чтобы получить apache2 с mpm-worker и php5 с fastcgi:

  • apache2
  • apache2-MPM-работник
  • php5-кли
  • php5-CGI
  • php5-общий
  • libapache2-мод-fcgid

Затем вам нужно создать файл, чтобы сообщить apache, как использовать файлы php. Я создал его в каталоге /etc/apache2/conf.d с именем php.conf. Это должно быть содержание:

<Directory /usr/share>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options ExecCGI FollowSymlinks Indexes
</Directory>

<Files ~ (\.php)>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options  ExecCGI
    allow from all
</Files>

И это все. Очевидно, убедитесь, что пользователь, группа и разрешения для файлов являются правильными (www-данные для пользователя и группы и 644 и 755 для файлов и папок).

Моя ошибка не состояла в том, чтобы добавить <Files></Files> тег. После добавления я наконец смог получить доступ к сайту. Прежде чем иметь конфигурацию PHP под <Files> тег я добавлял эти строки в виртуальном хосте, под <Directory> тег моего хозяина. Как это:

<Directory /var/www/website/>
    AddHandler fcgid-script .php
    FCGIWrapper /usr/lib/cgi-bin/php5 .php
    Options  ExecCGI Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Но это не сработало! В моей виртуальной машине у меня есть именно эти строки, и она отлично работает... так что, возможно, мое решение работает и для вас.

Надеюсь, это кому-нибудь поможет:)

Изменить: Это ветка форума, которая спасла мою жизнь: http://forum.parallels.com/showthread.php?t=85413

Вы получаете только запрещенную ошибку PHP, если вы не включили ExecCGI в вашем apache httpd.conf

Options Indexes FollowSymLinks **ExecCGI**

AllowOverride None
Require all granted

Хм, вы установили модуль Apache2 PHP?

Немного похоже, что вы установили php5-cli, но не модуль apache2.

На этой странице вы нашли короткий пример. Возможно, я мог бы помочь тебе.

Это действительно озадачивает меня. Была точно такая же проблема. Решил это так: я добавил.htaccess файл со следующим содержанием:

# Follow symbolic links in this directory.
Options +FollowSymLinks

И все под этой папкой внезапно начало работать должным образом.

Добавление Indexes а также FollowSymLinks к Files тег решил мою проблему:

<Files ~ "\.php$>"
  AddHandler fcgid-script .php
  FcgidWrapper "c:/php/php-cgi.exe" .php
  Options ExecCGI Indexes FollowSymLinks
  allow from all
</Files>
Другие вопросы по тегам