2010-10-24 4 views
2

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

Ситуация довольно простая, на рабочем столе Ubuntu 10.04. Я установил apache через Synaptic и Php5 в соответствии с этим руководством и its spin-off here. На данный момент, если я иду в командной строке и вызвать скрипт PHP это работает, например:

php test.php 

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

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

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

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

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

+0

Я, имеющий такую ​​же проблему ... :( – elboletaire

ответ

5

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

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

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

  • apache2
  • apache2 -mpm-работник
  • php5-CLI
  • 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> 

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

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

Edit: Это форум поток, который спас мне жизнь: http://forum.parallels.com/showthread.php?t=85413

+1

Большое спасибо за отзыв! – Purefan

1

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

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

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

+0

Я на самом деле пробовал, но это не сработало, вот пастебин операции: http://pastebin.com/XWuBnPEV, и если я установлю libapache2-mod-php5, он конфликтует с mpm-worker, который превосходит цель – Purefan

+0

hmm the mpm-worker для многопоточности и лучше для php5-cgi ... для сначала вы должны использовать установку apache2 по умолчанию с mpm-prefork. Сделайте то же самое, что и пример сверху. – Stony

+0

php5-cgi уже установлен, не могли бы вы рассказать о том, как сделать «Как сделать пример, например, сверху»? – Purefan

0

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

# Follow symbolic links in this directory. 
Options +FollowSymLinks 

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

0

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

Options Indexes FollowSymLinks **ExecCGI** 

AllowOverride None 
Require all granted