Zainstalowałem phpMyAdmin, ale nie mogę go otworzyć w żadnej przeglądarce: jeśli przeglądam , dostaję przekierowanie 301 (*) http://localhost:8080/phpmyadmin
. Jeśli dodam a /
na końcu adresu, otrzymam zamiast tego status błędu 500 .
(*) przechwycone za pomocą Wireshark. Jeśli używam netcata z terminala na tym samym hoście, otrzymuję przekierowanie 301 na inny adres .
Środowisko to maszyna wirtualna, którą zbudowałem na potrzeby programowania / testowania, w której zainstalowałem środowisko LEMP (Linux / Nginx / MySQL / PHP). To czysta instalacja 64- bitowego CentOS 6 działającego jako gość na hoście 64-bitowym Ubuntu 12.04. Maszyna wirtualna działa w trybie NAT z przekierowaniem portów. Mogę otworzyć http://localhost:8080
na maszynie gościa i wyświetlić stronę powitalną nginx. Mogę również otworzyć stronę phpinfo , więc wiem, że PHP działa.
Zainstalowałem osobno pakiety nginx, MySQM, PHP i phpMyAdmin. Używam domyślnych ustawień phpMyAdmin. Po instalacji MySQL uruchomiłem mysql_secure_installation
polecenie i, między innymi, wyłączyłem zdalny dostęp do roota.
Oto moje pliki konfiguracyjne:
źródło
Odpowiedzi:
Było wiele przyczyn uniemożliwiających mi zalogowanie się do phpMyAdmin:
mbstring
Błąd 500 generuje komunikat
PHP Fatal error: Call to undefined function mb_detect_encoding() in /usr/share/php/gettext/gettext.inc on line 177
w pliku/var/log/php-fpm/www-error.log
. Zgodnie z komentarzem na stronie http://www.php.net/manual/en/mbstring.installation.php próbowałem zainstalowaćphp-mbstring
pakiet, ale był już obecny.Ponowne uruchomienie
php-fpm service
rozwiązanego błędu 500.sesje php
Po rozwiązaniu poprzedniego błędu otrzymałem następujący błąd:
/etc/phpmyadmin/config.inc.php
miał linięale
session.save_path
zmienna PHP jest ustawiona na nieistniejący/var/lib/php/session
folder.Utworzenie folderu z odpowiednimi uprawnieniami rozwiązało ten błąd, mogę się poprawnie zalogować.
końcowe przekierowanie ukośnika
Jeśli spróbuję uzyskać dostęp do dowolnego adresu na tym serwerze bez końcowego ukośnika na końcu adresu URL, nginx dodaje ukośnik końcowy i usuwa jego
:8080
część. Nie dzieje się to, jeśli zostawiam końcowe slash.(np .:
http://localhost:8080/example
zostaje przekierowany dohttp://localhost/example/
. Fakt, że phpMyAdmin działa zarówno na maszynie wirtualnej, jak i na hoście, spowodował więcej zamieszania, ponieważ widziałbym okno logowania phpMyAdmin, ale w niewłaściwym miejscu docelowym).Wydaje się, że jest to powszechny błąd Nginx . Poszukałem go i wypróbowałem różne rozwiązania bezskutecznie. Jeśli znajdę rozwiązanie dla mojej sprawy, zaktualizuję tę odpowiedź.
źródło
Logowanie do
/etc/phpmyadmin/config.inc.php
katalogu głównego musi być dozwolone w pliku konfiguracyjnym.Dodaj następujący wiersz:
źródło
true
. Nie ustawiłem go na false i nie ma go w pliku konfiguracyjnym.Sprawdź,
/var/log/nginx/error.log
aby zobaczyć, co mówi błąd 500.Wygląda na to, że korzystasz z dwóch konfiguracji (jednej na porcie 80 i drugiej na 8080), które mogą powodować konflikty.
źródło