phpmyadmin forbidden in Nginx although permited

25,064

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;
Share:
25,064

Related videos on Youtube

pntshere
Author by

pntshere

Updated on September 18, 2022

Comments

  • pntshere
    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:

    Update for Jenny:

    I removed the symlink and added this conf inside the http block in nginx.conf and restarted the server, but no change is seen:

    server {    
        location /phpmyadmin {
            index index.php index.html index.htm;
            root /usr/share;
        }
    }
    
    • ZioBudda
      ZioBudda over 6 years
      Have 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
      Salma Gomaa about 4 years
      This answer is so helpful: stackoverflow.com/a/54370993/1770571 It works for me!
  • dortegaoh
    dortegaoh over 6 years
    Please edit your complete server block into your configuration, including your php fastcgi configuration.
  • dortegaoh
    dortegaoh over 6 years
    Your nginx.conf is missing the complete configuration for running php scripts.
  • pntshere
    pntshere over 6 years
    Jenny I've edited the question and added an update for you.
  • pntshere
    pntshere over 6 years
    In great plea, please edit to add an example (should this come in nginx.conf or in a dedicated conf file?).
  • pntshere
    pntshere over 6 years
    Also, 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.