- Ошибка 403
- Возможные причины и их решения, если проблема на стороне владельца сайта
- Заблокирована работа хостинга
- Некорректно задана главная страница сайта
- Access denied (403) for PHP files with Nginx + PHP-FPM
- Permission issues with Apache inside Docker
- How to fix permission denied error on any document on website
Ошибка 403
Вы столкнулись с сообщением «Ошибка 403»? Что делать, мы расскажем в этой статье.
Если при открытии вашего сайта вы получили одно из следующих уведомлений:
- В доступе на страницу отказано,
- 403 Forbidden,
- Forbidden, доступ запрещен,
- Forbidden You don’t have permission to access,
- Access denied.
Ошибка 403 говорит о том, что доступ к запрашиваемой странице запрещен или у пользователя нет прав на просмотр контента.
Причинами такой ошибки, чаще всего, являются неправильные настройки сайта, которые может решить только создатель ресурса. Со стороны пользователя также бывают проблемы, но они случаются намного реже.
Возможные причины и их решения, если проблема на стороне владельца сайта
Заблокирована работа хостинга
403 ошибка может возникнуть, если услуга хостинга была заблокирована. Блокировка может произойти, если превышены технические ограничения тарифа или нарушены условия договора оферты. Перед блокировкой на контактный email владельца услуги придет предупреждение. У него будет 24 часа на устранение причины блокировки.
Проверьте вашу электронную почту. Если вам приходило уведомление о блокировке, следуйте рекомендациям в письме. После снятия блокировки сайт будет доступен. Если вы пропустили такое сообщение или не устранили проблему вовремя, услуга блокируется. Для снятия блокировки следуйте инструкции в письме или обратитесь в техническую поддержку.
Если подобных писем не приходило и услуга не блокировалась, причина ошибки в другом.
Некорректно задана главная страница сайта
Главная страница сайта (индексный файл) – это первая страница, которая открывается пользователю, если он перешел по домену без указания точной страницы сайта, например www.test.ru. По общепринятым правилам она называется index.html или index.php. Если в корневой папке сайта отсутствует файл с названием index.html или index.php, возникнет ошибка 403. В качестве индексного файла может использоваться файл, отличный от index.html или index.php. Но название данного файла должно быть указано в настройках.
- в корневой папке сайта существовал файл главной страницы (индексный файл),
- в настройках указано соответствующее название файла главной страницы (индексного файла).
Чтобы это проверить войдите в панель управления хостингом и следуйте соответствующей инструкции ниже:
Access denied (403) for PHP files with Nginx + PHP-FPM
I have been spending few hours on that issue and despite the high number of posts related to it, I cannot solve it. I have a Fedora 20 box with Nginx + PHP-FPM that worked quite good until today (after I reloaded php-fpm.service I guess). Nginx is serving static files with no problem, but any PHP file triggers an error 403. The permissions are ok, nginx and php-fpm are running under the user «nginx»:
root 13763 0.0 0.6 490428 24924 ? Ss 15:47 0:00 php-fpm: master process (/etc/php-fpm.conf) nginx 13764 0.0 0.1 490428 7296 ? S 15:47 0:00 php-fpm: pool www nginx 13765 0.0 0.1 490428 7296 ? S 15:47 0:00 php-fpm: pool www nginx 13766 0.0 0.1 490428 7296 ? S 15:47 0:00 php-fpm: pool www nginx 13767 0.0 0.1 490428 7296 ? S 15:47 0:00 php-fpm: pool www nginx 13768 0.0 0.1 490428 6848 ? S 15:47 0:00 php-fpm: pool www
The served files have been set to nginx user as well, I even ended chmoding 777 those files to try, but still «Access denied» for any PHP files. Below is a server of my Nginx config:
[www] . listen = 127.0.0.1:9000 user = nginx group = nginx .
For the versions: php-5.5.11 (as well as php-fpm-5.5.11 of course) nginx-1.4.7 I am adding the Nginx error log:
FastCGI sent in stderr: "Access to the script '/var/www/html' has been denied (see security.limit_extensions)" while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxx.xxx.xxx.xxx"
And precise that security.limit_extensions is correct, set to: security.limit_extensions = .php . About the path permissions, /var/www/html can be traversed. What am I missing?
Permission issues with Apache inside Docker
However, when I build the container and run it, I only ever get 403 errors. Notice that I’ve specified that Apache should run as www-data in www-data group, and that /var/www has been recursively chown d to belong to root:www-data . Also, all directories are searchable and readable, and all files are readable and writeable by the www-data group (well, according to ls -la and namei -m they are anyways). How do I fix these permissions issues? I cant figure it out. Actual error from the Apache error.log:
[Fri May 23 18:33:27.663087 2014] [core:error] [pid 14] (13)Permission denied: [client 11.11.11.11:61689] AH00035: access to /index.php denied (filesystem path '/var/www/index.php') because search permissions are missing on a component of the path
Step 21 : RUN ls -laR /var/www ---> Running in 74fd3609dfc8 /var/www: total 1036 drwxr-xr-x 67 root www-data 4096 May 23 18:38 . drwxr-xr-x 26 root root 4096 May 23 18:38 .. -rw-rw-r-- 1 root www-data 28 May 23 12:22 .gitignore -rw-rw-r-- 1 root www-data 501 May 23 12:22 .htaccess -rw-rw-r-- 1 root www-data 7566 May 23 12:22 index.php
Step 22 : RUN namei -m /var/www/index.php ---> Running in 1203f0353090 f: /var/www/index.php drwxr-xr-x / drwxr-xr-x var drwxr-xr-x www -rw-rw-r-- index.php
EDIT2 After trying a whole bunch of things, including chmod -R 777 just to see if I could get anything to work, I tried putting the source files added from the Dockerfile into /var/www/html , the default location for Apache files to be served. I matched the default file permissions exactly (I think), and it still isn’t working. The default index.html that comes with Apache loads just fine, but the added src folder still have a 403 access denied error. I changed the Dockerfile to ADD src /var/www/html/src and the permissions were set using:
RUN find /var/www/html -type d -exec chmod u+rwx,g+rx,o+rx <> + RUN find /var/www/html -type f -exec chmod u+rw,g+r,o+r <> +
No luck. Below is some of the output of ls -laR on /var/www . Notice that the permissions for the html folder and index.html that come with an apache2 install match those of the added src folder:
Step 19 : RUN ls -laR /var/www/ ---> Running in 0520950d0426 /var/www/: total 12 drwxr-xr-x 6 root root 4096 May 23 19:23 . drwxr-xr-x 24 root root 4096 May 23 19:23 .. drwxr-xr-x 5 root root 4096 May 23 19:23 html /var/www/html: total 24 drwxr-xr-x 5 root root 4096 May 23 19:23 . drwxr-xr-x 6 root root 4096 May 23 19:23 .. -rw-r--r-- 1 root root 11510 May 23 18:28 index.html drwxr-xr-x 47 root root 4096 May 23 19:23 src /var/www/html/src: total 1032 drwxr-xr-x 47 root root 4096 May 23 19:23 . drwxr-xr-x 5 root root 4096 May 23 19:23 .. -rw-r--r-- 1 root root 28 May 23 12:22 .gitignore -rw-r--r-- 1 root root 501 May 23 12:22 .htaccess -rw-r--r-- 1 root root 7566 May 23 12:22 index.php
Perhaps chmod doesn’t work quite the way I thought it does?? EDIT3 A final bit of information. The Docker container is being built by buildbot, which I’ve been assuming runs as root. I haven’t been able to reproduce this scenario without using buildbot to do the building. Building everything via sudo docker build -t apache . type commands on my laptop works fine, but the problems arise when buildbot does it. No idea why :^/
How to fix permission denied error on any document on website
So, I’ve been trying to setup WordPress for a while now (so much for their 5min install claim) and have just gotten stuck. No matter what, I just get:
Forbidden You don't have permission to access /wordpress/ on this server.
# ls -l total 276 -rw-r----- 1 www-data www-data 397 2008-05-25 20:33 index.php -rw-r----- 1 www-data www-data 7669 2011-02-15 17:48 readme.html drw-r----- 8 www-data www-data 4096 2012-03-05 20:55 wp-admin -rw-r----- 1 www-data www-data 40400 2009-10-25 10:32 wp-app.php -rw-r----- 1 www-data www-data 220 2008-10-14 06:22 wp-atom.php -rw-r----- 1 www-data www-data 274 2008-05-25 15:50 wp-blog-header.php -rw-r----- 1 www-data www-data 3928 2010-01-07 19:38 wp-comments-post.php -rw-r----- 1 www-data www-data 238 2008-10-14 06:22 wp-commentsrss2.php lrwxrwxrwx 1 www-data www-data 28 2012-03-05 20:55 wp-config.php -> /etc/wordpress/wp-config.php -rw-r----- 1 www-data www-data 2616 2009-12-08 19:59 wp-config-sample.php drw-r----- 5 www-data www-data 4096 2012-03-05 20:55 wp-content -rw-r----- 1 www-data www-data 1253 2009-08-16 04:59 wp-cron.php -rw-r----- 1 www-data www-data 220 2008-10-14 06:22 wp-feed.php drw-r----- 6 www-data www-data 4096 2012-03-05 20:55 wp-includes -rw-r----- 1 www-data www-data 1946 2009-05-05 19:43 wp-links-opml.php -rw-r----- 1 www-data www-data 2341 2009-05-20 16:32 wp-load.php -rw-r----- 1 www-data www-data 22859 2011-02-15 17:48 wp-login.php -rw-r----- 1 www-data www-data 7578 2009-09-18 20:43 wp-mail.php -rw-r----- 1 www-data www-data 487 2009-04-20 21:50 wp-pass.php -rw-r----- 1 www-data www-data 218 2008-10-14 06:22 wp-rdf.php -rw-r----- 1 www-data www-data 316 2008-05-25 15:50 wp-register.php -rw-r----- 1 www-data www-data 220 2008-10-14 06:22 wp-rss2.php -rw-r----- 1 www-data www-data 218 2008-10-14 06:22 wp-rss.php -rw-r----- 1 www-data www-data 23097 2009-12-14 00:38 wp-settings.php -rw-r----- 1 www-data www-data 3693 2009-11-26 11:29 wp-trackback.php -rw-r----- 1 www-data www-data 93445 2009-12-01 08:14 xmlrpc.php
So, www-data owns all these files. So, then I was thinking maybe apache isn’t running as www-data? So I did:
# ps -A | grep apache 22511 ? 00:00:00 apache2 22513 ? 00:00:00 apache2 22514 ? 00:00:00 apache2 22515 ? 00:00:00 apache2 22516 ? 00:00:00 apache2 22517 ? 00:00:00 apache2
# These need to be set in /etc/apache2/envvars User $ Group $
export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data export APACHE_PID_FILE=/var/run/apache2.pid
[Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.html denied [Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.cgi denied [Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.pl denied [Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.php denied [Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.xhtml denied [Mon Mar 05 22:29:17 2012] [error] [client x.x.x.x] (13)Permission denied: access to /wordpress/index.htm denied
xxx:/etc/apache2/sites-available# cat default ServerAdmin webmaster@localhost DocumentRoot /var/www/ ExpiresActive On Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ExpiresDefault A300 ExpiresByType text/css "access plus 1 month" ExpiresByType text/javascript "access plus 1 month" ExpiresByType application/javascript "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" RewriteEngine On ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined