91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

phpMyAdmin在nginx+php-fpm模式下無法使用的解決方法

發布時間:2020-12-09 10:25:20 來源:億速云 閱讀:319 作者:小新 欄目:數據庫

這篇文章給大家分享的是有關phpMyAdmin在nginx+php-fpm模式下無法使用的解決方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

昨天接到一個網友的問題,說yum安裝nginx+php-fpm+mysql+phpMyAdmin后,發現phpMyAdmin無法打開,一直報502錯誤已經抓狂半天了,本著幫助別人快樂自己的原則,遠程幫他看了一下, 現記錄和總結如下,問題解決思路的總結放在文章最后,問題解決思路總結也是本文的重點。

問題環境:CentOS6通過yum安裝的nginx+php-fpm+mysql+phpMyAdmin

問題描述:安裝完成后發現nginx沒有問題,而phpMyAdmin無法打開,提示502錯誤

問題解決過程

查看問題環境的安裝包:

nginx-filesystem-1.0.15-12.el6.noarch
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
php-pdo-5.3.3-46.el6_6.x86_64
php-xml-5.3.3-46.el6_6.x86_64
php-fpm-5.3.3-46.el6_6.x86_64
php-cli-5.3.3-46.el6_6.x86_64
php-mysql-5.3.3-46.el6_6.x86_64
php-eaccelerator-0.9.6.1-1.el6.x86_64
php-gd-5.3.3-46.el6_6.x86_64

根據nginx報的502錯誤,可以初步判斷是upstream出現了問題,再提到upstream之前,先列一下nginx的配置文件(去掉注釋,我已經將nginx記錄錯誤日志的級別從默認級別提升到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;
}

由于此配置文件中沒有顯式寫明任何server,因此需要查看一下include /etc/nginx/conf.d/*.conf; 所包含的默認server文件,即/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也算是對upstream的一種代理

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的版本,查閱官方網站的文檔看看是否支持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對日志級別的一些參數配置,以提升日志級別,獲取詳細的錯誤信息。

搜索配置文件的中log關鍵字,或者根據文檔或資料修改,一些方法或步驟如下:

/etc/php-fpm.conf文件,將日志級別從notice改動到debug

log_level = debug

/etc/php-fpm.d/www.conf文件,將php worker的標準輸出和錯誤輸出從/dev/null 重定向到主要的錯誤日志中,即/var/log/php-fpm/error.log

catch_workers_output = yes

/etc/php.ini文件

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

再次重新啟動php-fpm,發現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"

錯誤信息中提到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版本都是要查看的,此步驟有助于根據掌握的知識和經驗,初步判斷是否相互兼容,是否有未修復bug等。

第二,執行nginx -t檢查nginx的配置文件有無顯式錯誤,檢查nginx運行狀態

第三,執行php-fpm -t檢查php-fpm的配置文件有無顯式錯誤,檢查php-fpm的運行狀態

第四,檢查錯誤日志,先檢查nginx的錯誤日志,因為它是“第一現場”,再檢查php-fpm日志,因為它是“第二現場”

第五,如果日志提示明顯,則按照日志提示,修改相應的配置文件,再次驗證問題

第六,如果依然有問題,則本步驟就是解決問題的最關鍵的步驟,需要提升記錄日志的級別,這也就是為什么有debug為什么叫做調試,將nginx的日志級別提升到info(為什么不能提升到debug,nginx編譯時有個--debug選項,不確定時可以不用),將php的日志級別提升到debug,打開所有的php調試開關

第七,重新啟動nginx和php-fpm后,配置文件生效,重新打開網頁重現問題,再次打開日志,根據日志提示內容再次,修改相應的配置文件,再次驗證問題

第八,如果反復修改無果后,該查閱官方手冊就查閱官方手冊,該Google 搜索就Google搜索,該反饋bug就反饋bug,如果持續無果,則換種解決問題的方式,尋找正確的解決方案,參照如下:

  • 參考已有的成功的版本組合,更換版本組合或者修改配置文件,消除環境差異性,適用于快速解決問題

  • 將yum安裝改為編譯安裝,或者yum安裝更少的包,以最小化的安裝方式將問題范圍縮減到最小,從而確定問題,提升解決問題的能力,適用于研究和學習

感謝各位的閱讀!關于phpMyAdmin在nginx+php-fpm模式下無法使用的解決方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

正安县| 平顶山市| 太谷县| 怀柔区| 全椒县| 资讯| 收藏| 同心县| 石景山区| 迁西县| 衡山县| 类乌齐县| 昌吉市| 新野县| 邹平县| 孝义市| 江门市| 桃园县| 安平县| 扶沟县| 平凉市| 周口市| 百色市| 西昌市| 汉阴县| 绍兴县| 南充市| 会同县| 株洲市| 平谷区| 辉南县| 图们市| 平远县| 宜春市| 桃江县| 龙口市| 泰顺县| 通州区| 马关县| 乐陵市| 壶关县|