Я нашел много ответов, но никто не решил мою проблему:

Я пытаюсь получить доступ к / phpmyadmin, но попадаю на 404 с Nginx 1.6.2, PHP7.0 и Debian 8 (Джесси).

Это мой /etc/nginx/site-available/guillaume-rz.fr:

server {                                                                                 
    listen 80;                                                                       
    root /home/guillaume-rz/www;                                                     
    server_name www.guillaume-rz.fr;                                                 
    location / {                                                                     
            index index.php;                                                         
    }                                                                                

    location /phpmyadmin {                                                           
            root /usr/share/phpmyadmin;                                              
            index index.php index.html index.htm;                                    
            location ~ ^/phpmyadmin/(.+\.php)$ {                                     
                    try_files $uri =404;                                             
                    root /usr/share/;                                                
                    fastcgi_pass unix:/var/run/php7.0-fpm.sock; # or 127.0.0.1:9000  
                    fastcgi_index index.php;                                         
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include /etc/nginx/fastcgi_params;                               
            }                                                                        

            location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$
                    root /usr/share/;                                                
            }                                                                        
    }                                                                                

    location /phpMyAdmin {                                                           
             rewrite ^/* /phpmyadmin last;                                           
    }                                                                                

    location ~ \.php$ {                                                              
            include snippets/fastcgi-php.conf;                                       
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;                          
            # include /etc/nginx/fastcgi_params;                                     
            # fastcgi_index index.php;                                               
    }                                                                                
}       

Я устанавливаю PhpMyAdmin, он доступен здесь: / var / www / phpmyadmin /

И я создаю символическую ссылку: ln -s / usr / share / phpmyadmin / / var / www / phpmyadmin

2
GuillaumeRZ 23 Апр 2018 в 17:58

1 ответ

Лучший ответ

В настоящий момент ваши скрипты PHP обрабатываются последним блоком location, даже если они начинаются с /phpmyadmin/. Блок регулярного выражения location имеет приоритет над блоком префикса location на том же уровне. Дополнительные сведения см. В этом документе.

Используйте модификатор ^~, чтобы изменить порядок приоритета, например:

location ^~ /phpmyadmin {                                                           
    root /usr/share;                                              
    index index.php index.html index.htm;                                    

    location ~ \.php$ {                                     
        try_files $uri =404;                                             
        fastcgi_pass unix:/var/run/php7.0-fpm.sock; # or 127.0.0.1:9000  

        include /etc/nginx/fastcgi_params;                               
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }                                                                            
}                                                                                
2
Richard Smith 23 Апр 2018 в 16:10