php script 403 forbidden error

2020-03-01 16:34发布

问题:

I have a script giving me error 403 Forbidden error, it's just a copy of another script but the difference in this is that both use another mysql class to access database.

My whole project is complete and this is last file so I don't want to do the whole work again for a single file.

Server logs shows that client denied by server configuration:

What should I look for?

I have tried the following:

  • Permissions are 644
  • New file with just simple echo gives 403 too
  • Changed name of folder

However, index.php works perfectly.

回答1:

Check the permissions and also ownership of the file. Generally, 403 means that the web server doesn't have the rights to read the file and therefore can't continue the request. The permissions may be set correctly, however the file might be owned by another account on the server - an account that isn't part of the same group as the account which is running the server.

For instance, I believe* Apache is ran by default under the httpd user account, which is part of the httpd group. However, the FTP user you're logging in as (for instance ftpuser) might not be part of the httpd group. So, in copying the file you've created it under a different user account and Apache won't get execute access with 644.

* it's been a while since I've used apache, but it's similar under nginx.



回答2:

This isssue occurs if you have had denied for all in .htaccess file. Changing that resolves the issue.



回答3:

I had the same problem. The .htaccess file in my root folder has this code:

<Files ~ "\.(php|php5|py|jsp|cgi|sh)$">
    Require all denied
</Files>

But there was a folder /example where I needed to call php files, so I created a .htaccess file in that specific folder with this content:

<Files ~ "\.(php)$">
    Require all granted
</Files>

Note: I am running Apache 2.4