Nie mogę otworzyć phpMyAdmin, pojawia się błąd 301 lub 500


8

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:8080na 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_installationpolecenie i, między innymi, wyłączyłem zdalny dostęp do roota.

Oto moje pliki konfiguracyjne:

  • /etc/php.ini: link
  • /etc/php.d/mysql.ini: link
  • /etc/nginx/nginx.conf: link
  • /etc/nginx/conf.d/default.conf: link (Aby uruchomić skrypty PHP, dostosowałem go, postępując zgodnie z samouczkami online i nie jestem pewien, co robiłem ).
  • /etc/phpMyAdmin/config.inc.php: link

4
To pytanie uzyskało 4 głosy do zamknięcia. Dlaczego? meta.superuser.com/questions/6455/…
Ten Brazylijczyk

Odpowiedzi:


4

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 177w 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-mbstringpakiet, ale był już obecny.

Ponowne uruchomienie php-fpm servicerozwiązanego błędu 500.

sesje php

Po rozwiązaniu poprzedniego błędu otrzymałem następujący błąd:

wprowadź opis zdjęcia tutaj

/etc/phpmyadmin/config.inc.php miał linię

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

ale session.save_pathzmienna PHP jest ustawiona na nieistniejący /var/lib/php/sessionfolder.

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 :8080część. Nie dzieje się to, jeśli zostawiam końcowe slash.

(np .: http://localhost:8080/examplezostaje przekierowany do http://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ź.


0

Logowanie do /etc/phpmyadmin/config.inc.phpkatalogu głównego musi być dozwolone w pliku konfiguracyjnym.

Dodaj następujący wiersz:

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


3
cześć i witamy w SuperUser. poświęć trochę czasu na wyjaśnienie składni i szczegółów dotyczących działania tych linii poleceń. może być odpowiedni dla przyszłych czytelników lub dla samego QA.
Lorenzo Von Matterhorn

Nie widzę nawet ekranu logowania phpmyadmin. Dodałem linię do pliku cfg, ale to nie rozwiązało problemu.
Ten Brazylijczyk

docs.phpmyadmin.net/en/latest/config.html stwierdza, że ​​wartością domyślną jest true. Nie ustawiłem go na false i nie ma go w pliku konfiguracyjnym.
Ten Brazylijczyk

0

Sprawdź, /var/log/nginx/error.logaby 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.


Nie używam dwóch konfiguracji serwera WWW na tym samym komputerze. 8080 to port przekierowania NAT dla maszyny wirtualnej gościa, a 80 to port systemu operacyjnego hosta. Technicznie są one na tej samej maszynie, ale zwirtualizowane od siebie.
Ten Brazylijczyk

Twoja sugestia szukania plików dziennika skierowała mnie jednak w dobrym kierunku.
Ten Brazylijczyk
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.