Nginx phpmyadmin перенаправляет на / вместо / phpmyadmin при входе в систему


9

У меня проблемы с моим phpmyadmin при установке nginx.

Когда я вхожу <ServerIP>/phpmyadminи журналы, я попадаю на <ServerIP>/index.php?<tokenstuff>вместо<ServerIP>/phpmyadmin/index.php?<tokenstuff>

Конфигурационный файл 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/;
    }
}
}

(Любые общие советы по приведению в порядок этих конфигурационных файлов тоже принимаются)


@MichaelHampton На самом деле я думаю, что это была проблема. Я удалил пакет, установленный через yum, и скачал последнюю версию с сайта phpmyadmin, и вуаля. Если вы ответите, я приму это.
Фредерик Нильсен

Ответы:


2

Это не похоже на проблему с nginx. Похоже, что phpMyAdmin не был установлен правильно и думает, что это /вместо /phpmyadmin. Проверьте вашу конфигурацию phpMyAdmin.


Это то, что привело меня к правильному ответу - переустановка phpmyadmin - Спасибо! :)
Фредерик Нильсен

4
«просто переустановить» - абсурдный ответ. Если конфигурация phpMyAdmin неверна, должен быть способ перенастроить без переустановки всего приложения!
alexw

1
Это требует дополнительной информации: пожалуйста, обратитесь к источнику, который объясняет, как и где установить параметр «где PHP думает, что это».
Диана

Это больше комментарий, чем ответ. Отличное предложение, но проверьте phpMyAdmin для чего?
Шерил Хохман

@SherylHohman Это может сделать интересный вопрос, задаваемый отдельно. Но этот был решен давно.
Майкл Хэмптон

13

Несмотря на то, что автор решил свою проблему переустановкой phpMyAdmin, необходимо правильно настроить nginx для корректной обработки перенаправления при входе в систему.

После нескольких дней разбивания моей головы о клавиатуре я наконец нашел реальное решение, и я делюсь здесь, поскольку эта тема все еще имеет высокий приоритет в поиске Google.

Как указано в ссылке: http://www.samundra.com.np/use-phpmyadmin-with-nginx-and-php7/1374

Чтобы решить эту проблему, вы должны добавить следующий блок кода на ваш сайт nginx по умолчанию, доступный для доступа к нему:

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

Поместите этот блок в serverблок:

# 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;
   }

Я надеюсь, что это поможет кому-то однажды ...


Я рад, что это решило вашу проблему! Удачных кодировок!
Даниэль Алвес

Это все здесь ... исправляет все проблемы ...
ThatTechGuy

определенно спас меня не один день. за проголосовал!
Сюй Инь

Не исправить это для меня. Есть еще идеи?
Диана

Что делать, если я не хочу phpmyadmin в / phpmyadmin, а в / что угодно вместо этого? Я пытался изменить вложенные «местоположения», но это не сработало.
0lli.rocks

4

Эта проблема вызвана общей конфигурацией cgi.fix_pathinfo = 0, которая отключает текущий путь для PHP-FPM. Одним из быстрых решений является изменение cgi.fix_pathinfo обратно на 1 или установка параметров пути в блоке виртуального сервера nginx.


2

Ваша проблема, кажется, похожа на это: /programming/1011101/nginx-location-directive-doesnt-seem-to-be-working-am-i-missing-something

Если, прочитав это и изменив конфигурацию, у вас все еще есть проблемы, пожалуйста, сообщите!


Я прочитал эту ветку и попробовал некоторые из конфигов, но все та же проблема - либо перенаправляется в / вместо / phpmyadmin, либо просто идет 404.
Фредерик Нильсен

404 "генерируется" с помощью try_files, что означает, что он не находит файлы phpmyadmin ... может быть, что-то не так с установкой phpmyamdin?
Mikec

Просто обратите внимание на другой комментарий. Я думаю, это был конфиг phpmyadmin в конце концов!
Mikec

Может быть .. Я думаю, что это была комбинация обоих.
Фредерик Нильсен


0

добавьте хост virtaul к вашему ламповому серверу с любым доменным именем, например 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;
    }
}

Отредактируйте файл Hosts

добавить эту строку внизу

192.168.1.xx  phpmyadmin1.com

сохраните и закройте, затем перезагрузите сервер

service nginx restart

service php5-fpm restart

Получите доступ к URL вашего виртуального хоста в браузере на странице входа в phpmyadmin.

http://screencloud.net/v/nGK5

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


Добро пожаловать в сбой сервера! В своих вопросах и ответах, пожалуйста, старайтесь не использовать случайные доменные имена и используйте либо свой собственный домен, либо одно из зарезервированных доменных имен RFC 6761, например example.com, example.org или подобное. Пожалуйста, обратитесь к этому разделу вопросов и ответов за нашими рекомендациями относительно того, как и что (не) следует скрывать в ваших вопросах.
HBruijn

0

Только это у меня сработало

location /utils/phpmyadmin/ {
    try_files $uri $uri/ =404;
    index index.php index.html index.htm
    proxy_set_header Proxy "";
}

-1

phpMyAdmin из репозиториев Ubuntu 16.04 и более поздних версий неправильно перенаправляет.

Я просто скачиваю новую версию phpmyadmin с официального сайта 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

откройте config.inc.php:

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

и положить какой-то случайный символ между

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

сохранить и открыть свой домен / phpmyadmin в браузере

Также вы можете изменить ссылку на phpmyadmin (для большей безопасности) и добавить базовую аутентификацию из nginx к ссылке:

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

cd /var/www/html

sudo mv phpmyadmin anything

теперь ваш phpmyadmin работает на https: // домен / что угодно , давайте добавим пароль:

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

Теперь откройте конфигурацию nginx (по умолчанию: sudo nano / etc / nginx / sites-available / default ) и добавьте перед последним}

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

Включить хранилище настроек:

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

Найдите следующие строки:

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

Изменить на:

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

Расположить:

// $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';

Раскомментируйте их ( удалите // )

Теперь сохраните и выйдите.

Перейдите в свой mysql (по умолчанию: sudo mysql -u root -p )

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

попробуйте открыть домен / что-нибудь в браузере

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.