Я не могу открыть phpMyAdmin, получаю ошибку 301 или 500


8

Я установил phpMyAdmin, но не могу открыть его ни в одном браузере: я получаю перенаправление 301 (*), если просматриваю http://localhost:8080/phpmyadmin. Если я добавлю /в конец адреса, вместо этого я получу 500 ошибок .

(*) захвачено с помощью Wireshark. Если я использую netcat из терминала на том же хосте, я получаю перенаправление 301 на другой адрес .

Среда - это виртуальная машина, которую я создал для целей разработки / тестирования, где я установил среду LEMP (Linux / Nginx / MySQL / PHP). Это чистая установка CentOS 6 64bit, работающая в качестве гостя на 64-битном хосте Ubuntu 12.04. ВМ работает в режиме NATed с переадресацией портов. Я могу открыть http://localhost:8080на гостевой машине и увидеть страницу приветствия nginx. Я также могу открыть страницу phpinfo , так что я знаю, что PHP работает.

Я установил пакеты nginx, MySQM, PHP и phpMyAdmin каждый по отдельности. Я использую настройки по умолчанию для phpMyAdmin. После установки MySQL я выполнил mysql_secure_installationкоманду и, среди других опций, отключил удаленный root-доступ.

Вот мои файлы конфигурации:

  • /etc/php.ini: ссылка
  • /etc/php.d/mysql.ini: ссылка
  • /etc/nginx/nginx.conf: ссылка
  • /etc/nginx/conf.d/default.conf: link (Для запуска сценариев PHP я настроил его, следуя онлайн-учебникам, и я не совсем уверен в том, что я делал .)
  • /etc/phpMyAdmin/config.inc.php: ссылка

4
Этот вопрос получил 4 голосов для закрытия. Почему? meta.superuser.com/questions/6455/…
тот бразильский парень

Ответы:


4

Было несколько причин, мешающих мне войти в phpMyAdmin:

MBstring

Ошибка 500 генерирует сообщение PHP Fatal error: Call to undefined function mb_detect_encoding() in /usr/share/php/gettext/gettext.inc on line 177в файле /var/log/php-fpm/www-error.log. Согласно комментарию на http://www.php.net/manual/en/mbstring.installation.php я пытался установить php-mbstringпакет, но он уже присутствовал.

Перезапуск php-fpm serviceрешил ошибку 500.

php сессии

После устранения предыдущей ошибки я получил следующую ошибку:

введите описание изображения здесь

/etc/phpmyadmin/config.inc.php была линия

$ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie';

но session.save_pathпеременная PHP установлена ​​в несуществующую /var/lib/php/sessionпапку.

Создание папки с надлежащими разрешениями решило эту ошибку, я могу правильно войти в систему.

перенаправление косой черты

Если я пытаюсь получить доступ к любому адресу на этом сервере без завершающей косой черты в конце URL, nginx добавляет завершающую косую черту и удаляет ее :8080часть. Этого не произойдет, если я оставлю косую черту.

(например: http://localhost:8080/exampleперенаправляется на http://localhost/example/. Тот факт, что phpMyAdmin запущен как на виртуальной машине, так и на хост-машине, добавил больше путаницы, поскольку я вижу диалоговое окно входа в phpMyAdmin, но не в том месте).

Кажется, это распространенная ошибка nginx . Я гуглил и пробовал разные решения безуспешно. Если я найду решение для своего случая, я обновлю этот ответ.


0

Корневые логины должны быть разрешены в /etc/phpmyadmin/config.inc.phpфайле конфигурации.

Добавьте следующую строку:

$ cfg ['Servers'] [$ i] ['AllowRoot'] = TRUE;


3
привет и добро пожаловать в SuperUser. пожалуйста, уделите некоторое время объяснению синтаксиса и подробностей о том, что будут выполнять эти командные строки. это может быть актуально для будущих читателей или для самого QA.
Лоренцо фон Маттерхорн

Я даже не вижу экран входа в phpmyadmin. Я добавил строку в файл cfg, но это не решило проблему.
Этот бразильский парень

docs.phpmyadmin.net/en/latest/config.html утверждает, что значением по умолчанию является true. Я не установил значение false, и его нет в файле конфигурации.
Этот бразильский парень

0

Проверьте, /var/log/nginx/error.logчтобы увидеть, что говорит ошибка 500.

Похоже, вы используете две конфигурации (одна на порту 80, а другая на 8080), которые могут конфликтовать.


Я не использую две конфигурации веб-сервера на одной машине. 8080 - это порт перенаправления NAT для гостевой виртуальной машины, а 80 - порт для операционной системы хоста. Технически они находятся на одной машине, но виртуализированы друг от друга.
Этот бразильский парень

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