Heim  >  Artikel  >  Datenbank  >  Was soll ich tun, wenn phpMyAdmin nicht im Nginx+php-fpm-Modus verwendet werden kann?

Was soll ich tun, wenn phpMyAdmin nicht im Nginx+php-fpm-Modus verwendet werden kann?

藏色散人
藏色散人nach vorne
2020-12-03 14:34:012616Durchsuche

Das Folgende wird von phpmyadmin in der Tutorial-Spalte eingeführt, um das Problem zu lösen, dass phpMyAdmin nicht im Nginx + PHP-FPM-Modus verwendet werden kann Wer braucht es!

Was soll ich tun, wenn phpMyAdmin nicht im Nginx+php-fpm-Modus verwendet werden kann?

Ich habe gestern eine Frage von einem Internetnutzer erhalten, der sagte, dass ich nach der Installation von nginx+php-fpm+mysql+phpMyAdmin festgestellt habe, dass phpMyAdmin nicht geöffnet werden konnte, und dass ich weiterhin 502-Fehler gemeldet habe Um anderen zu helfen, habe ich das Prinzip des Glücklichseins aus der Ferne gelesen. Die Zusammenfassung der Ideen zur Problemlösung befindet sich am Ende des Artikels Problemlösungsideen stehen ebenfalls im Mittelpunkt dieses Artikels.

Empfohlen: „phpmyadmin-Nutzungsanleitung

Problemumgebung: CentOS6 nginx+php-fpm+mysql+phpMyAdmin wurde über yum installiert

Problembeschreibung: Nach Abschluss der Installation wird festgestellt, dass dies der Fall ist Kein Problem mit Nginx, aber phpMyAdmin kann nicht geöffnet werden, was zu einem 502-Fehler führt

nginx-1.0.15-12 .el6.x86_64

rrdtool-php-1.3.8-7.el6.x86_64
php-pear-1.9.4-4.el6.noarch
php-devel-5.3.3- 46.el6_6.x86_64
php-mbstring-5.3.3-46.el6_6.x86_64
php-mcrypt-5.3.3-3.el6.x86_64
php-5.3.3-46 .el6_6.x86_64
php-tidy-5.3.3-46.el6_6.x86_64
php-pecl-memcache-3.0.5-4.el6.x86_64
php-xmlrpc-5. 3. 3-46.el6_6.x86_64
php-xmlseclibs-1.3.1-3.el6.noarch
php-common-5.3.3-46. el6_6.x86_64. 46 .el6_6.x86_64. php-cli-5.3.3-46 .6.1- 1.el6.x86_64
php-gd -5.3.3-46.el6_6.x86_64

Anhand des von Nginx gemeldeten Fehlers 502 können wir zunächst beurteilen, dass ein Problem mit Upstream vorliegt. Bevor wir Upstream erwähnen, listen wir die Nginx-Konfigurationsdatei auf (entfernen Sie die Kommentare, ich habe die Ebene des Nginx-Fehlerprotokolls von der Standardebene angehoben). zur Info) .

user              nginx;   
worker_processes  1;
error_log  /var/log/nginx/error.log info;
pid        /var/run/nginx.pid;
events {   
    worker_connections  1024;    
}
http {   
    include       /etc/nginx/mime.types;    
    default_type  application/octet-stream;
    client_max_body_size 10M;
    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;   
    keepalive_timeout  65;  
    include /etc/nginx/conf.d/*.conf;
}

Da in dieser Konfigurationsdatei kein Server explizit angegeben ist, müssen Sie die in include /etc/nginx/conf.d/*.conf; enthaltene Standardserverdatei überprüfen, die /etc/nginx/conf.d / ist. default.conf, entferne die Kommentare

cat /etc/nginx/conf.d/default.conf    
server {    
    listen       80 default_server;    
    server_name  _;  
    include /etc/nginx/default.d/*.conf;
    location / {   
        root   /usr/share/nginx/html;    
        index  index.php index.html index.htm;    
    }
    error_page  404              /404.html;   
    location = /404.html {    
        root   /usr/share/nginx/html;    
    }  
    error_page   500 502 503 504  /50x.html;    
    location = /50x.html {    
        root   /usr/share/nginx/html;    
    }
     location ~ [^/]\.php(/|$) {   
                fastcgi_split_path_info ^(.+?\.php)(/.*)$;    
                if (!-f $document_root$fastcgi_script_name) {    
                        return 404;    
                }    
                fastcgi_pass 127.0.0.1:9000;    
                fastcgi_index index.php;    
                include fastcgi_params;    
     }    
}

Vorläufiges Urteil, es gibt tatsächlich kein Problem mit dieser Nginx-Konfiguration, es sollte ein Problem mit PHP-FPM oder PHP selbst sein (was den Umfang des Problems einschränkt).

Überprüfen Sie die Nginx-Protokolldatei (/var/log/nginx/error.log) und finden Sie die folgende Eingabeaufforderung. Es handelt sich definitiv um ein Problem mit PHP-FPM.

2015/08/14 17:05:32 [notice] 9645#0: using the "epoll" event method   
2015/08/14 17:05:32 [notice] 9645#0: nginx/1.0.15    
2015/08/14 17:05:32 [notice] 9645#0: built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)     
2015/08/14 17:05:32 [notice] 9645#0: OS: Linux 2.6.32-504.el6.x86_64    
2015/08/14 17:05:32 [notice] 9645#0: getrlimit(RLIMIT_NOFILE): 65535:65535    
2015/08/14 17:05:32 [notice] 9646#0: start worker processes    
2015/08/14 17:05:32 [notice] 9646#0: start worker process 9648    
2015/08/14 17:05:36 [error] 9648#0: *1 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.228, server: 192.168.1.101, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.1.101"    
2015/08/14 17:09:22 [error] 9648#0: *4 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.228, server: 192.168.1.101, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.1.101"    
2015/08/14 17:11:23 [error] 9648#0: *7 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 192.168.1.228, server: 192.168.1.101, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "192.168.1.101"    
2015/08/14 17:11:33 [info] 9648#0: *9 client closed prematurely connection while reading client request line, client: 192.168.1.228, server: 192.168.1.101

Erstellen Sie eine Datei, die das kann Öffnen Sie phpinfo und prüfen Sie, ob die PHP-Datei korrekt analysiert werden kann (was den Umfang des Problems weiter einschränkt)

Es wurde festgestellt, dass php-fpm die PHP-Datei normal analysieren kann und jede darin enthaltene PHP-Komponente normal angezeigt wird

Überprüfen Sie die Version von phpMyAdmin, und überprüfen Sie die Dokumentation auf der offiziellen Website, um zu sehen, ob es php5.3.3 unterstützt. Es wurde festgestellt, dass das aktuelle phpMyAdmin es unterstützt, daher sollte es kein Problem mit phpMyAdmin sein

Begann, das Protokoll von php- zu überprüfen. fpm (/var/log/php-fpm/error.log) und habe Folgendes gefunden:

[14-Aug-2015 16:34:53] NOTICE: fpm is running, pid 9522   
[14-Aug-2015 16:34:53] NOTICE: ready to handle connections    
[14-Aug-2015 16:43:54] WARNING: [pool www] child 9527 exited on signal 11 (SIGSEGV) after 541.401349 seconds from start    
[14-Aug-2015 16:43:55] NOTICE: [pool www] child 9614 started    
[14-Aug-2015 16:44:00] WARNING: [pool www] child 9526 exited on signal 11 (SIGSEGV) after 547.107407 seconds from start    
[14-Aug-2015 16:44:00] NOTICE: [pool www] child 9615 started    
[14-Aug-2015 17:05:36] WARNING: [pool www] child 9523 exited on signal 11 (SIGSEGV) after 1843.098829 seconds from start    
[14-Aug-2015 17:05:36] NOTICE: [pool www] child 9649 started

Dieses Protokoll Offensichtlich reicht es nicht aus, genügend Informationen bereitzustellen, um das Problem zu lösen. Ändern Sie daher einige Parameter der Protokollebene in PHP. fpm und php.ini, um die Protokollebene zu erhöhen und detaillierte Fehlerinformationen zu erhalten.

Suchen Sie nach dem Protokollschlüsselwort in der Konfigurationsdatei oder ändern Sie es entsprechend der Dokumentation oder den Informationen. Einige Methoden oder Schritte sind wie folgt:

/etc/php-fpm.conf-Datei, ändern Sie die Protokollebene von „Notice“ auf „Debug“.

log_level = debug

/etc/ Die Datei php-fpm.d/www.conf leitet die Standardausgabe und Fehlerausgabe des PHP-Workers von /dev/null an das Hauptfehlerprotokoll um, das /var/log/php-fpm/ ist. error.log

catch_workers_output = yes

/etc/php.ini-Datei

error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On
display_startup_errors = On
log_errors = On
track_errors = On
html_errors = On

Starten Sie php-fpm erneut und finden Sie detaillierte Fehler im Worker:

[14-Aug-2015 17:09:18] NOTICE: fpm is running, pid 9672   
[14-Aug-2015 17:09:18] NOTICE: ready to handle connections    
[14-Aug-2015 17:09:22] WARNING: [pool www] child 9673 said into stderr: "[Fri Aug 14 17:09:22 2015"    
[14-Aug-2015 17:09:22] WARNING: [pool www] child 9673 said into stderr: "] [notice] EACCELERATOR(9673): PHP crashed on opline 30 of PMA_URL_getCommon() at /usr/share/nginx/html/libraries/url_generating.lib.php:188"    
[14-Aug-2015 17:09:22] WARNING: [pool www] child 9673 said into stderr: ""    
[14-Aug-2015 17:09:22] WARNING: [pool www] child 9673 exited on signal 11 (SIGSEGV) after 4.286828 seconds from start    
[14-Aug-2015 17:09:22] NOTICE: [pool www] child 9679 started    
[14-Aug-2015 17:11:23] WARNING: [pool www] child 9675 said into stderr: "[Fri Aug 14 17:11:23 2015"    
[14-Aug-2015 17:11:23] WARNING: [pool www] child 9675 said into stderr: "] [notice] EACCELERATOR(9675): PHP crashed on opline 30 of PMA_URL_getCommon() at /usr/share/nginx/html/libraries/url_generating.lib.php:188"

In der Fehlermeldung wird das PHP-Modul EACCELERATOR erwähnt. Stellen Sie daher zunächst fest, ob ein Problem mit vorliegt Deaktivieren Sie dieses Modul daher zunächst, indem Sie die Datei /etc/php.d/eaccelerator.ini in einen Suffixnamen ändern, z. B. mv /etc/php.d/eaccelerator.ini /etc/php.d/eaccelerator. ini~, Starten Sie dann php-fpm neu, überprüfen Sie die Ergebnisse erneut und stellen Sie fest, dass das Problem behoben wurde.

Es kann sein, dass Eaccelerator mit phpMyAdmin in Konflikt steht. Wenn Sie also phpMyAdmin verwenden möchten, können Sie dieses Modul deaktivieren oder dieses Paket während der Installation überspringen.

Hinweis: eAccelerator ist ein kostenloser und Open-Source-PHP-Beschleuniger, der das Caching von Inhalten optimiert und dynamisch macht, die Caching-Leistung von PHP-Skripten verbessert und den Server-Overhead von PHP-Skripten im kompilierten Zustand fast vollständig eliminiert. Es optimiert auch Skripte, um ihre Ausführungseffizienz zu beschleunigen. Verbessern Sie die Ausführungseffizienz des PHP-Programmcodes um das 1- bis 10-fache. (von bdbk)

Zusammenfassung der Problemlösungsideen

Artikel 0, Kommunikation ist der Schlüssel zur Fehlerdiagnose, z. B. Bereitstellungsplan, Schritte, durchgeführte Vorgänge usw.

Erstens ist nginx + php-fpm + phpMyAdmin aufgrund meiner Erfahrung eine sehr zuverlässige Kombination. Ich gehe daher davon aus, dass es sich um ein individuelles Problem und nicht um ein Batch-Problem handelt Pakete, Nginx-, PHP- und phpMyAdmin-Versionen sind alle zu überprüfen. Dieser Schritt hilft dabei, zunächst anhand Ihres Wissens und Ihrer Erfahrung zu beurteilen, ob sie miteinander kompatibel sind und ob nicht behobene Fehler vorliegen.

Zweitens führen Sie nginx -t aus, um zu überprüfen, ob explizite Fehler in der Nginx-Konfigurationsdatei vorhanden sind, und überprüfen Sie den Betriebsstatus von nginx

Drittens führen Sie php-fpm -t aus, um zu überprüfen, ob explizite Fehler in der PHP-fpm-Konfiguration vorhanden sind Datei und überprüfen Sie den PHP-FPM-Laufstatus.

Fünftens: Wenn die Protokollaufforderung offensichtlich ist, befolgen Sie die Protokollaufforderung, ändern Sie die entsprechende Konfigurationsdatei und überprüfen Sie das Problem erneut.

Sechstens: Wenn weiterhin ein Problem besteht, ist dieser Schritt der kritischste Schritt zur Lösung des Problems Problem. Sie müssen die Protokollierungsstufe erhöhen. Deshalb gibt es Debug und es wird Debuggen genannt. Erhöhen Sie die Protokollierungsstufe von Nginx auf „Info“. Es gibt eine Option „--debug“. Wenn Nginx kompiliert ist, müssen Sie es nicht verwenden. Erhöhen Sie die Protokollebene von PHP, um zu debuggen.

Siebentens: Nach dem Neustart von Nginx und PHP-FPM Wenn die Datei wirksam wird, öffnen Sie die Webseite erneut, um das Problem zu reproduzieren, öffnen Sie das Protokoll erneut, ändern Sie die entsprechende Konfigurationsdatei gemäß den Protokollanweisungen und überprüfen Sie sie erneut Zeit, es zu konsultieren, Google zu durchsuchen, wenn es Zeit ist, bei Google zu suchen, Fehler zu melden, wenn es weiterhin erfolglos bleibt, dann finden Sie eine andere Möglichkeit, das Problem zu lösen. Die richtige Lösung finden Sie hier:

Beziehen Sie sich auf die vorhandenen erfolgreichen Versionskombinationen, ändern Sie die Versionskombinationen oder modifizieren Sie die Konfigurationsdateien, um Umgebungsunterschiede zu beseitigen, was für eine schnelle Problemlösung geeignet ist

  • Ändern Sie die yum-Installation in eine kompilierte Installation, oder yum installiert weniger Pakete, um den Umfang des Problems mit einer minimalen Installationsmethode auf ein Minimum zu reduzieren, wodurch das Problem identifiziert und die Fähigkeit zur Lösung des Problems verbessert wird, was für Forschung und Lernen geeignet ist

  • Eine letzte Sache noch: Solange das Problem reproduziert werden kann und nicht zufällig auftritt, wird es gut gelöst, also geraten Sie nicht in Panik, seien Sie nicht ungestüm und geben Sie nicht auf kann es sogar langsam angehen und dann ruhig damit umgehen.

    --Ende--

    Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn phpMyAdmin nicht im Nginx+php-fpm-Modus verwendet werden kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen