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.