Nginx phpmyadmin redirigeant vers / au lieu de / phpmyadmin lors de la connexion

9

J'ai des problèmes avec mon phpmyadmin sur mon installation nginx.

Lorsque j'entre <ServerIP>/phpmyadminet me connecte, je suis redirigé vers <ServerIP>/index.php?<tokenstuff>au lieu de<ServerIP>/phpmyadmin/index.php?<tokenstuff>

Fichier de configuration Nginx:

user  nginx;
worker_processes  5;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  2;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Default.conf:

server {
    listen       80;
    server_name  _;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
    location /phpmyadmin {
    root /usr/share/;
    index index.php index.html index.htm;
    location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files $uri =404;
        root /usr/share/;
        fastcgi_pass unix:/tmp/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        include fastcgi_params;
        fastcgi_param PATH_INFO $fastcgi_script_name;
    }

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

(Tous les conseils généraux sur le rangement de ces fichiers de configuration sont également acceptés)

Frederik Nielsen
la source
@MichaelHampton En fait, je pense que c'était le problème. J'ai supprimé le paquet installé via yum, et téléchargé le dernier depuis le site Web de phpmyadmin, et voilá. Si vous mettez une réponse, je l'accepterai.
Frederik Nielsen

Réponses:

2

Cela ne ressemble pas à un problème nginx. Cela ressemble à phpMyAdmin n'a pas été installé correctement et pense qu'il est à la /place de /phpmyadmin. Vérifiez votre configuration phpMyAdmin.

Michael Hampton
la source
C'est ce qui m'a conduit à la bonne réponse - réinstaller phpmyadmin - Merci! :)
Frederik Nielsen
4
"Réinstaller juste" est une réponse absurde. Si la configuration de phpMyAdmin est incorrecte, il devrait y avoir un moyen de reconfigurer sans avoir à réinstaller l'application entière!
alexw
1
Cela demande plus d'informations: veuillez créer un lien vers une source qui explique comment et où définir le paramètre «où PHP le pense».
Diana
Il s'agit plus d'un commentaire que d'une réponse. Excellente suggestion, mais vérifiez quoi de phpMyAdmin?
SherylHohman
@SherylHohman Cela pourrait rendre une question intéressante posée séparément. Mais celui-ci a été résolu depuis longtemps.
Michael Hampton
13

Même si l'auteur a résolu son problème de réinstallation de phpMyAdmin, nginx doit être correctement configuré pour gérer correctement la redirection lors de la connexion.

Après des jours à me casser la tête sur le clavier, j'ai finalement trouvé la vraie solution et je partage ici car ce fil a toujours une priorité élevée sur la recherche Google.

Comme indiqué sur le lien: http://www.samundra.com.np/use-phpmyadmin-with-nginx-and-php7/1374

Pour résoudre le problème, vous devez ajouter le bloc de code suivant à votre site par défaut nginx, vous y accéderez avec:

sudo nano /etc/nginx/sites-available/default

Placez ce bloc en serverbloc:

# Phpmyadmin Configurations
    location /phpmyadmin {
       root /usr/share/;
       index index.php index.html index.htm;
       location ~ ^/phpmyadmin/(.+\.php)$ {
               try_files $uri =404;
               root /usr/share/;
               #fastcgi_pass 127.0.0.1:9000;
               #fastcgi_param HTTPS on; # <-- add this line
               fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
       }
       location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
               root /usr/share/;
       }
   }

   # Dealing with the uppercased letters
   location /phpMyAdmin {
       rewrite ^/* /phpmyadmin last;
   }

J'espère que cela aidera quelqu'un un jour ...

Daniel Alves
la source
Je suis content que cela vous ait résolu le problème! Bon codage!
Daniel Alves
C'est ici ... résout tous les problèmes ...
ThatTechGuy
m'a certainement sauvé plus d'une journée. a voté!
Xu Yin
Ne le résout pas pour moi. D'autres idées?
Diana
Et si je ne veux pas phpmyadmin à / phpmyadmin mais à / quoi que ce soit à la place? J'ai essayé de changer les "emplacements" imbriqués mais cela n'a pas fonctionné.
0lli.rocks
4

Ce problème est dû à la configuration commune de cgi.fix_pathinfo = 0 qui désactive le chemin actuel pour PHP-FPM. Une solution rapide consiste à redéfinir cgi.fix_pathinfo sur 1 ou à définir les paramètres de chemin sur le bloc serveur virtuel de nginx.

Saúl Delgadillo R
la source
2

Votre problème semble être similaire à celui-ci: /programming/1011101/nginx-location-directive-doesnt-seem-to-be-working-am-i-missing-something

Si en lisant cela et en modifiant votre configuration, vous rencontrez toujours des problèmes, dites-le!

Mikec
la source
J'ai lu ce fil et j'ai essayé certaines des configurations, mais toujours le même problème - soit redirigé vers / au lieu de / phpmyadmin, soit simplement 404.
Frederik Nielsen
404 est "généré" par "try_files", ce qui signifie qu'il ne trouve pas les fichiers phpmyadmin ... peut-être quelque chose de mal avec l'installation de phpmyamdin?
Mikec
Remarquez l'autre commentaire -.- Je suppose que c'était la configuration de phpmyadmin après tout!
Mikec
Peut-être .. Je pense que c'était une combinaison des deux.
Frederik Nielsen du
0

ajoutez un hôte virtaul à votre serveur de lampes avec n'importe quel nom de domaine comme phpmyadmin1.com

server {
    #listen 80 default_server;
    #listen [::]:80 default_server ipv6only=on;

    root /var/www/phpmyadmin;
    #some /var/www/html/phpmyadmin
    index index.php index.html index.htm;

    server_name phpmyadmin1.com;

        location / {
        try_files $uri $uri/ /index.php?$args;
     }

    location ~ \.php$ {
        root           /usr/share/nginx/html;
        try_files $uri =404;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Modifiez votre fichier Hosts

ajoutez cette ligne en bas

192.168.1.xx  phpmyadmin1.com

enregistrez et fermez, puis redémarrez votre serveur

service nginx restart

service php5-fpm restart

Accédez à votre URL d'hôte virtuel sur le navigateur de votre page de connexion voir phpmyadmin

http://screencloud.net/v/nGK5

http://screencloud.net/v/6M8r

Sandeep Kumar Soni
la source
Bienvenue dans Server Fault! Dans vos questions et réponses, veuillez vous abstenir d'utiliser des noms de domaine aléatoires et utiliser votre propre domaine ou l'un des noms de domaine réservés RFC 6761 tels que example.com, example.org ou similaires. Veuillez vous référer à ce Q&R pour nos recommandations concernant comment et quoi (ne pas) masquer dans vos questions.
HBruijn
0

Seulement cela a fonctionné pour moi

location /utils/phpmyadmin/ {
    try_files $uri $uri/ =404;
    index index.php index.html index.htm
    proxy_set_header Proxy "";
}
Simon Fearby
la source
-1

phpMyAdmin des référentiels d'Ubuntu 16.04 et versions ultérieures ne redirige pas correctement.

Je viens de télécharger la nouvelle version de phpmyadmin depuis le site officiel de phpmyadmin:

sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.6.6/phpMyAdmin-4.6.6-all-languages.tar.gz

sudo tar xvf phpMyAdmin-4.6.6-all-languages.tar.gz

sudo mv phpMyAdmin-4.6.6-all-languages /usr/share/phpmyadmin

sudo rm -rf phpMyAdmin-4.6.6-all-languages.tar.gz

sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

ouvrez config.inc.php:

sudo nano /usr/share/phpmyadmin/config.inc.php

et mettre un caractère aléatoire berween '

$cfg['blowfish_secret'] = 'i\kywQ>_h4L~S-Pt2rS'VAe)QpED7JI#';

enregistrez et ouvrez votre domaine / phpmyadmin dans le navigateur

vous pouvez également modifier le lien vers phpmyadmin (pour une meilleure sécurité) et ajouter l'authentification de base de nginx au lien:

sudo ln -s /usr/share/phpmyadmin /var/www/html

cd /var/www/html

sudo mv phpmyadmin anything

maintenant votre phpmyadmin fonctionne sur https: // domaine / n'importe quoi , ajoutons un mot de passe:

sudo sh -c "echo -n 'YourNameForLoginThere:' >> /etc/nginx/pmapass"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/pmapass"

maintenant ouvrez votre configuration nginx (par défaut: sudo nano / etc / nginx / sites-available / default ) et ajoutez avant dernier}

location /anything {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/pmapass;
}

Activer le stockage de configuration:

sudo nano /usr/share/phpmyadmin/config.inc.php

Localisez les lignes suivantes:

// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';

Changer pour:

$cfg['Servers'][$i]['controluser'] = 'yourdatabaseuser';
$cfg['Servers'][$i]['controlpass'] = 'yourdatabasepassword';

Localiser:

// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma__relation';
// $cfg['Servers'][$i]['table_info'] = 'pma__table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma__column_info';
// $cfg['Servers'][$i]['history'] = 'pma__history';
// $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
// $cfg['Servers'][$i]['tracking'] = 'pma__tracking';
// $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
// $cfg['Servers'][$i]['recent'] = 'pma__recent';
// $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
// $cfg['Servers'][$i]['users'] = 'pma__users';
// $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
// $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
// $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
// $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
// $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
// $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Décommentez-les ( supprimez // )

Maintenant, enregistrez et quittez.

Accédez à votre mysql (par défaut: sudo mysql -u root -p )

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'yourdatabaseuser'@'localhost' IDENTIFIED BY 'yourdatabasepassword';
exit;

essayez maintenant d'ouvrir le domaine / n'importe quoi dans le navigateur

Rampages
la source