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>