phpmyadmin forbidden in Nginx although permited
Solution 1
When you symlink a directory, you are telling nginx that "when you need to use /var/www/html/phpmyadmin
, you should instead look at /usr/share/phpmyadmin/
. And that directory is not under your webroot directory, so nginx won't be using it.
Instead of using a symlink, tell nginx to start using that directory directly. Example:
location /phpmyadmin {
index index.php index.html index.htm;
root /usr/share;
}
That will tell nginx that the location /phpmyadmin
lives under /usr/share
instead of under /var/www/html/
.
Or, if the /usr/
and the /var/
file systems are on the same partition, you could do a hard link instead of a symlink. But that's likely to cause problems for you if you ever change the partition layout.
Solution 2
The message
directory index of "/var/www/html/phpmyadmin/" is forbidden
indicates that nginx can't find the configured index document, so it tries to list the files (which is forbidden).
Check your index
directive in your nginx configuration. It should contain index.php
for phpMyAdmin.
Example:
index index.php index.html index.htm;
Related videos on Youtube
pntshere
Updated on September 18, 2022Comments
-
pntshere over 1 year
I fail to understand why entrance to PHPmyadmin is forbidden (
http://my_ip/phpmyadmin
). Here's what I did to install it:On a pure Ubuntu 16.04 machine (server, xenial) I've installed LEMP with php-fpm 7.0. Nginx conf is default:
apt-get update -y apt-get upgrade nginx mysql-server php-fpm php-mysql -y
I then installed PMA and permitted it:
DEBIAN_FRONTEND=noninteractive apt-get upgrade phpmyadmin php-mbstring php-mcrypt -y ln -s /usr/share/phpmyadmin/ /var/www/html/ chown -R www-data:www-data /usr/share/phpmyadmin/ /var/www/html chmod -R a-x,a=rX,u+w /usr/share/phpmyadmin/ /var/www/html
I really fail to understand what's wrong from the error log:
directory index of "/var/www/html/phpmyadmin/" is forbidden
What might cause PMA to be forbidden?
Update - general:
- My nginx.conf.
- My fastcgi.conf.
Update for Jenny:
I removed the symlink and added this conf inside the
http
block innginx.conf
and restarted the server, but no change is seen:server { location /phpmyadmin { index index.php index.html index.htm; root /usr/share; } }
-
ZioBudda over 6 yearsHave you tried to see the permissions of every directories in that path ? Have you see this answer? Can you show your nginx config file ?
-
Salma Gomaa about 4 yearsThis answer is so helpful: stackoverflow.com/a/54370993/1770571 It works for me!
-
dortegaoh over 6 yearsPlease edit your complete server block into your configuration, including your php fastcgi configuration.
-
dortegaoh over 6 yearsYour nginx.conf is missing the complete configuration for running php scripts.
-
pntshere over 6 yearsJenny I've edited the question and added an update for you.
-
pntshere over 6 yearsIn great plea, please edit to add an example (should this come in
nginx.conf
or in a dedicated conf file?). -
pntshere over 6 yearsAlso, to complete the answer, this is need here, because this will be the first QA session that explains the "forbidden" problem, for PMA. I found no other session to explain that.