다음은 phpmyadmin님이 nginx+php-fpm 모드에서 phpMyAdmin을 사용할 수 없는 문제를 해결하기 위해 튜토리얼 칼럼에 소개한 내용입니다. 누가 필요해!
어제 한 네티즌으로부터 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 |
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-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 오류를 토대로 업스트림에 문제가 있음을 초기에 판단할 수 있습니다. 업스트림에 대해 언급하기 전에 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의 php5.3.3을 지원하는지 공식 홈페이지의 문서를 확인해보면 현재 phpMyAdmin에서 지원하는 것으로 확인되었으므로 phpMyAdmin에는 문제가 없을 것입니다
phpMyAdmin의 로그를 확인하기 시작했습니다- 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 파일에서 로그 수준을 알림에서 디버그로 변경하세요.
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 파일
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배 향상시킵니다. (from bdbk)
문제 해결 아이디어 요약
0조, 오류 진단의 핵심은 배포 계획, 단계, 수행된 작업 등 문제를 자세히 이해하는 것입니다.
먼저, 경험적으로 판단하자면, nginx+php-fpm+phpMyAdmin은 매우 안정적인 조합이라 일괄적인 문제가 아닌 개별적인 문제라고 판단하여 직접 시작해서 시스템에 로그인하여 설치된 소프트웨어를 살펴보았습니다. 패키지, nginx, php, phpMyAdmin 버전이 모두 있습니다. 확인하려면 이 단계를 통해 처음에 서로 호환되는지, 가지고 있는 지식과 경험을 바탕으로 수정되지 않은 버그가 있는지 판단하는 데 도움이 됩니다.
둘째, nginx -t를 실행하여 nginx 구성 파일에 명시적인 오류가 있는지 확인하고 nginx의 실행 상태를 확인합니다.
셋째, php-fpm -t를 실행하여 php-fpm 구성에 명시적인 오류가 있는지 확인합니다. 파일을 만들고 php -Fpm 실행 상태를 확인하세요
넷째, 오류 로그를 확인하세요. 먼저 nginx 오류 로그를 확인하세요. "첫 번째 사이트"이기 때문이고, 그런 다음 php-fpm 로그를 확인하세요. "두 번째 사이트"이기 때문입니다.
다섯째, 로그 프롬프트가 확실하다면 로그 프롬프트에 따라 해당 구성 파일을 수정하고 문제를 다시 확인하세요
여섯째, 여전히 문제가 있다면이 단계는 문제를 해결하기 위한 가장 중요한 단계입니다. 문제. 로깅 수준을 높여야 합니다. 이것이 디버그가 있고 디버깅이라고 불리는 이유입니다. nginx가 컴파일될 때 확실하지 않은 경우에는 사용할 필요가 없습니다.) 디버깅을 위해 php의 로그 레벨을 올리고, 모든 PHP 디버깅 스위치를 켜십시오.
일곱 번째, nginx 및 php-fpm을 다시 시작한 후 구성 파일이 적용되면 웹페이지를 다시 열어서 문제를 재현하고 로그를 다시 열어서 로그 프롬프트 내용에 따라 해당 구성 파일을 수정하고 다시 확인하세요. 질문여덟째, 반복해서 수정해도 결과가 나오지 않으면, 문제가 발생할 때 공식 매뉴얼을 참조하세요. 상담해야 할 때이고, 구글에서 검색할 때 구글에서 검색하고, 버그 보고할 때 버그를 신고하고, 계속해서 성과가 없으면 다른 방법을 찾아 문제를 해결하는 방법은 다음을 참조하세요.
- 기존 성공한 버전 조합을 참고하거나 버전 조합을 변경하거나 구성 파일을 수정하여 환경 차이를 없애는 것이 빠른 문제 해결에 적합합니다
yum 설치를 컴파일 설치로 변경하거나, yum은 더 적은 수의 패키지를 설치하여 최소한의 설치 방법으로 문제의 범위를 최소화함으로써 문제를 식별하고 문제 해결 능력을 향상시켜 연구 및 학습에 적합합니다.
마지막으로 덧붙일 말: 문제가 재현 가능하고 무작위로 나타나지 않는 한 잘 해결될 테니 당황하지 말고, 성급하게 굴지 말고, 포기하지 마세요. 천천히 생각하고 침착하게 대처할 수도 있습니다.
--끝--
위 내용은 nginx+php-fpm 모드에서 phpMyAdmin을 사용할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Phpmyadmin은 데이터베이스를 관리하기위한 직관적 인 인터페이스를 제공하는 웹 기반 MySQL 데이터베이스 관리 도구입니다. 1. 데이터베이스 및 테이블을 작성, 수정, 삭제, SQL 쿼리 실행, 데이터 가져 오기 및 내보내기, 사용자 관리 및 권한 설정 수행을 허용합니다. 2. MySQL 서버와의 연결을 설정함으로써 Phpmyadmin은 사용자 요청을 SQL 명령으로 변환하여 실행합니다. 3. 기본 사용에는 테이블 데이터보기가 포함되며 고급 사용법은 복잡한 SQL 쿼리를 지원합니다. 4. 서버 상태를 확인하고 SQL 편집기를 사용하여 연결 고장 및 쿼리 구문 오류와 같은 일반적인 오류를 디버깅 할 수 있습니다. 5. 공통 필드에 대한 인덱스를 만들고 데이터베이스를 정기적으로 백업하고 구조를 깔끔하게 유지함으로써 성능 최적화를 달성 할 수 있습니다.

MySQL과 Phpmyadmin의 관계는 MySQL이 데이터를 저장하고 Phpmyadmin은 HTTP 프로토콜을 통해이 데이터를 관리한다는 것입니다. 1.MYSQL은 다양한 운영 체제 및 프로젝트 요구 사항을 지원하는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 2.PHPMYADMIN은 MySQL 데이터베이스를 관리하는 직관적 인 인터페이스를 제공하고 SQL 쿼리 및 데이터 가져 오기 및 내보내기를 지원하는 웹 기반 도구입니다. 3. PHPMYADMIN SQL 쿼리를 생성하여 MySQL 서버와 통신하며 사용자는 인터페이스를 통해 데이터베이스를 작동 할 수 있습니다. 4. phpmyadmin을 사용하여 데이터베이스 및 테이블을 만들고 쿼리를 실행하고 데이터를 내보내고 최적화 된 쿼리 및 관리 권한과 같은 고급 기능을 지원합니다.

phpmyadminandmysqltogetherenhancedatabasemanagementamagement agementiangeeadeficiency

MySQL 및 Phpmyadmin은 강력한 데이터베이스 관리 도구입니다. 1) MySQL은 데이터베이스 및 테이블을 작성하고 DML 및 SQL 쿼리를 실행하는 데 사용됩니다. 2) PHPMYADMIN은 데이터베이스 관리, 테이블 구조 관리, 데이터 운영 및 사용자 권한 관리에 직관적 인 인터페이스를 제공합니다.

phpmyadmin에서 SQL 쿼리를 생성하고 실행하는 방법에는 다음이 포함됩니다. 1. SQL 탭에 쿼리를 입력하고 클릭하여 실행; 2. 조인을 사용하여 테이블 데이터를 병합하십시오. 3. 쿼리를 최적화 할 때 인덱스와 제한을 사용하십시오. PHPMYADMIN은 직관적 인 인터페이스를 통해 데이터베이스 관리를 단순화하여 기본에서 고급까지 SQL 쿼리 작업을 지원합니다.

효율성과 편의성을 향상시킬 수 있기 때문에 데이터베이스 관리와 사용자 친화적 인 인터페이스를 결합해야합니다. 1) MySQL은 복잡한 데이터 스토리지 및 쿼리를 처리합니다. 2) Phpmyadmin은 관리를 단순화하기위한 직관적 인 웹 인터페이스를 제공합니다.

Phpmyadmin은 SQL 문을 생성하고 실행하여 MySQL 데이터베이스를 관리합니다. 1. 사용자는 웹 인터페이스를 통해 작동합니다. 2.phpmyadmin은 SQL 문을 생성하고 3. 실행을 위해 MySQL 서버로 전송합니다. 4. 결과를 반환하고 브라우저에 표시합니다.

PHPMYADMIN은 사용자가 그래픽 사용자 인터페이스 (GUI)를 통해 데이터베이스를 관리 할 수있는 웹 기반 MySQL 데이터베이스 관리 도구입니다. 1. PHP 스크립트를 통해 MySQL 데이터베이스와 상호 작용하고 사용자 작업을 SQL 쿼리로 변환하며 결과를 렌더링합니다. 2. 기본 사용에는 'my_database'및 '사용자'테이블이라는 데이터베이스 생성과 같은 데이터베이스 및 테이블 작성이 포함됩니다. 3. 고급 사용법은 특정 사용자 이름을 가진 사용자 찾기와 같은 복잡한 쿼리 및 사용자 권한 관리를 지원합니다. 4. 일반적인 오류 디버깅 기술에는 SQL 구문 확인, 권한 관리 및 로그보기가 포함됩니다. 5. 성능 최적화 제안에는 인덱스 최적화, 쿼리 최적화 및 보안 보장이 포함됩니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구
