Apache 2.4.6 на сервере Ubuntu: клиент запрещен конфигурацией сервера (PHP FPM) [При загрузке файла PHP]
сегодня я был обновлен Ubuntu server 13.04 (Raring Ringtail) → 13.10 (Дерзкая Саламандра).
и моя установка Apache 2 нарушена.
вот моя конфигурация:
File error.log
[Fri Oct 18 10:48:07.237170 2013] [:notice] [pid 8292:tid 139804677900160] FastCGI: process manager initialized (pid 8292)
[Fri Oct 18 10:48:07.241185 2013] [mpm_event:notice] [pid 8289:tid 139804677900160] AH00489: Apache/2.4.6 (Ubuntu) mod_fastcgi/mod_fastcgi-SNAP-0910052141 configured -- resuming normal operations
[Fri Oct 18 10:48:07.241652 2013] [core:notice] [pid 8289:tid 139804677900160] AH00094: Command line: '/usr/sbin/apache2'
[Fri Oct 18 10:48:28.313923 2013] [authz_core:error] [pid 8294:tid 139804573181696] [client 81.219.59.75:3536] AH01630: client denied by server configuration: /usr/lib/cgi-bin/php5-fcgi
File default.conf
#EU
<VirtualHost *:80>
#ServerName
DocumentRoot /var/www/dev_stable
DirectoryIndex index.php index.html index.htm
<Directory /var/www/dev_stable>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
File mods-enabled/fastcgi.conf
#<IfModule mod_fastcgi.c>
# AddHandler fastcgi-script .fcgi
# FastCgiWrapper /usr/lib/apache2/suexec
# FastCgiIpcDir /var/lib/apache2/fastcgi
#</IfModule>
<IfModule mod_fastcgi.c>
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
</Ifmodule>
при попытке загрузить файл через браузер я получил:
site_name/TEST/
Forbidden
You don't have permission to access /php5-fcgi/TEST/index.php on this server.
что я должен исправить?
9 ответов:
у меня точно такая же проблема. Я запустил несколько виртуальных хостов на своей локальной машине для разработки.
во-первых, я изменил
/etc/apache2/conf-available/php5-fpm.conf. Я заменил всеOrder Deny,Allow Deny from allдо
Require all grantedконфигурация должна быть включена
a2enconf php5-fpm. Я сделал то же самое с конфигурациями виртуальных хостов и сделал замены.Я думаю, что это не рекомендуется по соображениям безопасности, но пока я использую свой сервер только для локальных целей, с которыми я могу жить оно.
я столкнулся с этой точной проблемой при новой установке Apache 2.4. После нескольких часов поиска и тестирования я, наконец, узнал, что мне также нужно разрешить доступ к каталогу, содержащему (несуществующую) цель директивы Alias. То есть, это сработало для меня:
# File: /etc/apache2/conf-available/php5-fpm.conf <IfModule mod_fastcgi.c> AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization # NOTE: using '/usr/lib/cgi-bin/php5-cgi' here does not work, # it doesn't exist in the filesystem! <Directory /usr/lib/cgi-bin> Require all granted </Directory> </Ifmodule>
я столкнулся с подобной проблемой сегодня (но с
mod_wsgi). Это может быть Apache с 2.2 до 2.4 проблемы. Полный список изменений можно найти здесь.для меня это помогло добавить дополнительный
<Directory>- запись для каждого пути, на который жаловался журнал ошибок, и заполнение разделаRequire all granted.так что в вашем случае можно попробовать
<Directory /usr/lib/cgi-bin/php5-fcgi> Require all granted Options FollowSymLinks </Directory>и мне пришлось переместить мой файл конфигурации из папки
conf.dв папкуsites-enabled.в целом, это сделало трюк для меня, но я не гарантирую, что он работает и в вашем случае.
недавно я столкнулся с той же проблемой. Мне пришлось изменить мои виртуальные хосты от:
<VirtualHost *:80> ServerName local.example.com DocumentRoot /home/example/public <Directory /> Order allow,deny Allow from all </Directory> </VirtualHost>To:
<VirtualHost *:80> ServerName local.example.com DocumentRoot /home/example/public <Directory /> Options All AllowOverride All Require all granted </Directory> </VirtualHost>
на
apache2.conf, заменить или удалить AllowOverride нет требуют все отказано , как предложил Ян Чарни.например:
<Directory /> Options FollowSymLinks AllowOverride None #Require all denied Require all granted </Directory>он работал в Ubuntu 14.04 (Надежный Тар).
ваше имя файла virtualhost должно быть mysite.com. conf и должно содержать эту информацию
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. ServerName mysite.com ServerAlias www.mysite.com ServerAdmin [email protected] DocumentRoot /var/www/mysite # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory "/var/www/mysite"> Options All AllowOverride All Require all granted </Directory> # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Я не думаю, что замена "Require all denied" на "Require all granted"в этой директиве:
<Directory> Options FollowSymLinks AllowOverride None #Require all denied Require all granted </Directory>как предложил Ян Чарни и seonded user3801675 является наиболее безопасным способом решения этой проблемы.
согласно конфигурационным файлам Apache, эта строка запрещает доступ ко всей файловой системе вашего сервера. Замена его действительно может разрешить доступ к папкам виртуального хоста, но по цене предоставления доступа ко всему компьютеру в качестве хорошо!
подход Гева Баляна, похоже, является самым безопасным подходом здесь. Это был ответ на "проблемы с отказом в доступе", преследующие меня после настройки моего нового сервера Apache сегодня утром.
и я просто получил эту ошибку, потому что я использовал совершенно другой каталог DocumentRoot.
мой основной DocumentRoot был по умолчанию
/var/www/htmlа на виртуальном хосте я использовал/sites/example.comЯ создал ссылку на
/var/www/html/example.com(to/sites/example.com). DocumentRoot был установлен в/var/www/html/example.comОн работал как шарм.
для тех из вас, кто работает на AWS (Amazon Web Services), не забудьте добавить правило для вашего порта SSL (в моем случае 443) в свои группы безопасности. Я получал эту ошибку, потому что забыл открыть порт.
3 часа рвать на себе волосы позже...
Comments