ホームページ >データベース >PHPMyAdmin >phpMyAdmin が nginx+php-fpm モードで使用できない場合はどうすればよいですか?

phpMyAdmin が nginx+php-fpm モードで使用できない場合はどうすればよいですか?

藏色散人
藏色散人転載
2020-12-03 14:34:012673ブラウズ

以下は、phpmyadmin##Using Tutorial ColumnphpMyAdmin によって紹介されています。解決策 は nginx php-fpm モードでは使用できません。困っている友人のお役に立てれば幸いです。

phpMyAdmin が nginx+php-fpm モードで使用できない場合はどうすればよいですか?

昨日ネチズンから質問を受け取りました。yum で nginx php-fpm mysql phpMyAdmin をインストールした後、それが見つかったというものです。 phpMyAdmin が開けないということで、私は長い間 502 エラーを報告していました。他人の幸せを助けるという原則に沿って、私はリモートでチェックするのを手伝いました。記録と概要は次のとおりです。問題の概要-解決アイデアは記事の最後にあり、問題解決アイデアの概要もこの記事に含まれています。

推奨: "

phpmyadmin 使用法チュートリアル"

問題環境: CentOS6 nginx php-fpm mysql phpMyAdmin## yum 経由でインストール

#問題の説明:

インストール完了後、nginx には問題がないことがわかりましたが、phpMyAdmin を開くことができず、502 エラーが表示されます

問題解決プロセス

問題の環境を表示する インストール パッケージ:

#nginx-filesystem-1.0.15-12.el6.noarch## php-pear-1.9.4- 4.el6.noarchphp-devel-5.3.3-46.el6_6.x86_64 php-mbstring-5.3.3- 46.el6_6.x86_64php-mcrypt-5.3.3-3.el6.x86_64php -5.3.3-46.el6_6.x86_64php-tidy-5.3.3-46.el6_6.x86_64php-pecl -memcache-3.0.5- 4.el6.x86_64php-xmlrpc-5.3.3-46.el6_6.x86_64php -xmlseclibs-1.3.1- 3.el6.noarchphp-common-5.3.3-46.el6_6.x86_64php -pdo-5.3.3- 46.el6_6.x86_64php-xml-5.3.3-46.el6_6.x86_64php- fpm-5.3.3- 46.el6_6.x86_64php-cli-5.3.3-46.el6_6.x86_64php-mysql -5.3.3- 46.el6_6.x86_64php-eaccelerator-0.9.6.1-1.el6.x86_64php-gd- 5.3.3- 46.el6_6.x86_64

nginx から報告された 502 エラーに基づいて、まずアップストリームに問題があると判断できます。アップストリームに言及する前に、nginx の設定ファイルを一覧表示します (コメントを削除します。nginx のエラー ログのレベルをレベル上げしました)デフォルトのレベルは情報です)。

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;
}

この設定ファイルにはサーバーが明示的に記述されていないため、 include /etc/nginx/conf.d/*.conf; に含まれるデフォルトのサーバー ファイル (/etc/nginx /) を確認する必要があります。 conf.d/default.conf のコメント

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;    
     }    
}

を削除 暫定的な判断では、nginx の設定に問題はありませんが、php-fpm または php 自体に問題があるはずです (範囲を狭める)問題)。

nginx ログ ファイル (/var/log/nginx/error.log) を確認し、次のプロンプトを見つけます。これは間違いなく php-fpm の問題です。Fastcgi はアップストリームのプロキシとみなすこともできます

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

phpinfo を開くことができるファイルを作成し、php ファイルが正しく解析できるかどうかを確認します (問題の範囲をさらに絞り込みます)

php-fpm が正常に php ファイルを解析できることがわかりました。内部のすべての php コンポーネントは正常に表示されます

phpMyAdmin のバージョンを確認し、公式 Web サイトのドキュメントで php5.3.3 をサポートしているかどうかを確認し、現在の phpMyAdmin がそれをサポートしていることが判明したため、 phpMyAdmin の問題

php-fpm ログ (/var/log /php-fpm/error.log) のチェックを開始すると、次のことがわかりました:

[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

このログでは明らかに十分ではありません。問題を解決するには十分な情報があるため、php-fpm および php.ini 設定のログ レベルのいくつかのパラメーターを変更して、ログ レベルを上げ、詳細なエラー情報を取得します。

設定ファイルでログ キーワードを検索するか、ドキュメントまたは情報に従って変更します。いくつかの方法または手順は次のとおりです:

/etc/php-fpm.conf ファイル、ログレベルを Notice から変更します。 debug

log_level = debug

/etc/php-fpm.d/www.conf ファイルに移動し、php ワーカーの標準出力とエラー出力を /dev/null からメイン出力にリダイレクトします。エラー ログ: /var/ log/php-fpm/error.log

catch_workers_output = yes

/etc/php.ini file

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

php-fpm を再起動し、ワーカーで詳細なエラーを見つけます。 :

[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"

エラー メッセージには EACCELERATOR PHP モジュールが記載されているため、まずこのモジュールに問題があるかどうかを確認してください。したがって、最初に /etc/php.d/eaccelerator のサフィックス名を変更してこのモジュールを無効にします.ini ファイルたとえば、mv /etc/php.d/eaccelerator.ini /etc/php.d/eaccelerator.ini~ と入力し、php-fpm を再起動して結果を再度確認すると、問題が解決していることがわかります。

eaccelerator が phpMyAdmin と競合する可能性があるため、phpMyAdmin を使用したい場合は、このモジュールを無効にするか、インストール中にこのパッケージをスキップしてください。

注: eAccelerator は、動的コンテンツ キャッシュを最適化し、PHP スクリプトのキャッシュ パフォーマンスを向上させ、コンパイルされた状態の PHP スクリプトのサーバー オーバーヘッドをほぼ完全に排除する、無料のオープンソース PHP アクセラレータです。また、スクリプトを最適化して実行効率を高速化します。 PHP プログラム コードの実行効率が 1 ~ 10 倍向上します。 (bdbk より)

問題解決アイデアのまとめ

第 0 条、障害診断の鍵となるのはコミュニケーションであり、導入などの問題を詳細に理解する計画、手順、実行された操作など。

まず、経験に基づいて、nginx php-fpm phpMyAdmin は非常に信頼できる組み合わせであるため、これは個人的な問題であり、問​​題ではないと判断します。バッチの問題があるため、直接開始しました。システムにログインして、インストールされているソフトウェア パッケージを確認します。nginx、php、phpMyAdmin のバージョンを確認する必要があります。このステップは、知識と経験に基づいて予備的な判断を下すのに役立ちます。互換性があるかどうか、未修正のバグがあるかどうかなど。

2 番目に、nginx -t を実行して、nginx 構成ファイルに明示的なエラーがあるかどうかを確認し、nginx の実行ステータスを確認します。

3 番目に、php-fpm -t を実行して構成ファイルを確認します。 php-fpm の明示的なエラーがある場合は、php-fpm

4 番目に、エラー ログを確認します。最初に nginx エラー ログを確認します (これは「最初のサイト」であるため)。 php-fpm ログを確認します。これは「2 番目のシーン」であるためです。

#5 番目に、ログ プロンプトが明らかな場合は、ログ プロンプトに従い、対応する構成ファイルを変更し、問題を再度確認します

6 番目に、まだ問題がある場合は、

このステップは、問題を解決するための最も重要なステップです。ログのレベルを上げる必要があります。これが、デバッグがデバッグと呼ばれる理由です。. 増やすnginx のログ レベルを情報にします (nginx をデバッグにアップグレードできない理由) コンパイル時に --debug オプションがあります (よくわからない場合は使用する必要はありません)。php ログ レベルをデバッグに上げ、すべての PHP デバッグ スイッチをオンにします。プロンプトをログに記録し、問題を再度確認してください

8 番目、修正を繰り返しても失敗する場合は、公式マニュアルを参照してください。公式マニュアルを参照してください。Google で検索する場合は、Google で検索してください。バグを報告する場合は、バグを報告してください。問題が解決しない場合は、別の方法で問題を解決し、正しい解決策を見つけてください。以下を参照してください:

既存の成功したバージョンの組み合わせを参照し、変更してください。バージョンの組み合わせを変更するか、構成ファイルを変更して環境の違いを排除します。これは問題を迅速に解決するのに適しています
  • yum インストールをコンパイル済みインストールに変更するか、yum でインストールするパッケージの数を減らして、最小限のインストール方法で問題の範囲を最小限に抑えることで、問題を特定し、問題を解決する能力を向上させます。研究や勉強に最適です。

最後に一言: 問題が再現でき、ランダムに表示されない限り、問題は確実にうまく解決されますので、やめないでください。パニックになったり、衝動的になったりしますが、諦めずにゆっくりと落ち着いて対処してください。 ###### - 終わり - ###

##nginx-1.0.15- 12.el6.x86_64
rrdtool-php-1.3.8-7.el6.x86_64

以上がphpMyAdmin が nginx+php-fpm モードで使用できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。