403 Запрещено с php в рабочем режиме.Только для php файлов из браузера - PullRequest
3 голосов
/ 25 октября 2010

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

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

  php test.php

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

Я сменил владельца на / 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 ]

5 голосов
/ 11 мая 2012

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

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

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

  • apache2
  • apache2-mpm-worker
  • php5-cli
  • php5-cgi
  • php5-common
  • libapache2-mod-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

2 голосов
/ 17 марта 2016

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

Options Indexes FollowSymLinks **ExecCGI**

AllowOverride None
Require all granted

1 голос
/ 25 октября 2010

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

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

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

0 голосов
/ 13 февраля 2013

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

# Follow symbolic links in this directory.
Options +FollowSymLinks

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...