nginx가 PHP 프로세스를 찾을 수 없으면 어떻게 해야 합니까?
nginx가 PHP 프로세스를 찾을 수 없는 이유에 대한 해결 방법: 1. nginx.conf 구성을 수정합니다. 2. try_files를 사용하여 존재하지 않는 URL을 캡처하고 오류를 반환합니다.
이 기사의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
nginx PHP 프로세스를 찾을 수 없으면 어떻게 해야 합니까?
nginx에서 PHP 파일을 찾을 수 없습니다
php-fpm을 사용하여 PHP를 구문 분석하세요. "지정된 입력 파일 없음" 및 "파일을 찾을 수 없음"은 새로운 nginx 사용자에게 문제를 일으키는 일반적인 오류입니다. 실행할 SCRIPT_FILENAME 구성을 찾을 수 없습니다. php-fpm은 nginx에 기본 404 오류 프롬프트를 반환합니다.
예를 들어 내 웹 사이트에는 document_root 아래에 test.php가 없습니다. 이 파일에 액세스하면 패킷을 캡처하여 반환된 내용을 볼 수 있습니다.
HTTP/1.1 404 Not Found Date: Fri, 21 Dec 2012 08:15:28 GMT Content-Type: text/html Proxy-Connection: close Server: nginx/1.2.5 X-Powered-By: PHP/5.4.7 Via: 1.1 c3300 (NetCache NetApp/6.0.7) Content-Length: 16 File not found.
많은 사람들이 사용자가 이 기본 404 오류 메시지를 직접 보는 것을 원하지 않고 404 오류를 사용자 정의하고 싶어합니다.
솔루션을 제공하기 전에 먼저 이러한 유형의 404 오류를 방지하는 방법을 분석해 보겠습니다. 그런 다음 사용자 정의 404 오류 페이지가 표시될 수 있도록 이러한 상황(예: 사용자가 존재하지 않는 잘못된 경로를 입력함)에 직면했을 때 어떻게 해야 하는지 진실을 알려줍니다.
1. 잘못된 경로가 php-fpm 프로세스로 전송됩니다
이런 종류의 오류가 발생하면 10개 중 9개의 경우는 백엔드 fastcgi 프로세스가 잘못된 경로(SCRIPT_FILENAME)를 수신하여 발생하며, 주된 이유는 다음과 같습니다. 백엔드 fastcgi가 잘못된 경로를 수신하는 이유는 구성 오류입니다.
일반적인 nginx.conf 구성은 다음과 같습니다.
server { listen [::]:80; server_name example.com www.example.com; access_log /var/www/logs/example.com.access.log; location / { root /var/www/example.com; index index.html index.htm index.pl; } location /images { autoindex on; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/example.com$fastcgi_script_name; include fastcgi_params; } }
이 구성에는 불합리한 점이 많습니다. 명백한 문제 중 하나는 루트 지시문이 위치/블록에 배치된다는 것입니다. 루트 지시문이 위치 블록에 정의된 경우 루트 지시문은 해당 위치에서만 적용될 수 있습니다. 예를 들어, location /images 블록은 어떤 요청과도 일치하지 않습니다. 이 문제를 해결하려면 각 요청에서 루트 지시문을 반복적으로 구성해야 합니다. 따라서 각 위치가 상위 서버 블록에서 정의한 documentroot를 상속하도록 root 지시어를 server 블록에 넣어야 합니다. 위치가 다른 document_root를 정의해야 하는 경우 해당 위치에 별도의 root 지시어를 정의할 수 있습니다.
또 다른 문제는 fastCGI 매개변수 SCRIPT_FILENAME이 하드 코딩되어 있다는 것입니다. 루트 지시문의 값을 수정하거나 파일을 다른 디렉터리로 이동하면 php-fpm은 "No input file selected" 오류를 반환합니다. 왜냐하면 SCRIPT_FILENAME이 구성에 하드 코딩되어 있고 $document_root가 변경되어도 변경되지 않기 때문입니다. SCRIPT_FILENAME은 다음과 같이 구성됩니다:
fastcgi_param SCRIPT_FILENAME documentrootfastcgi_script_name;
따라서 서버 블록에서 루트 지시어를 구성하는 것을 잊을 수 없습니다. 그렇지 않으면 documentroot의 값이 비어 있고 fastcgi_script_name만 php-fpm에 전달됩니다. "지정된 입력 파일 없음" 오류가 발생합니다.
2. 요청한 파일이 실제로 존재하지 않습니다.
nginx가 존재하지 않는 .php 파일에 대한 요청을 받으면 nginx는 $uri가 .php로 끝나는지만 확인하고 파일이 존재하는지 판단하지 않기 때문입니다. . .php nginx로 끝나는 요청은 처리를 위해 php-fpm으로 직접 전송됩니다. php-fpm 처리 중에 파일을 찾을 수 없으면 "404 Not Found" 헤더와 함께 "지정된 입력 파일 없음"이 반환됩니다.
해결책
우리는 nginx에서 존재하지 않는 파일을 가로채서 사용자 정의 404 오류를 요청하고 반환합니다.
try_files를 사용하여 존재하지 않는 URL을 캡처하고 오류를 반환합니다.
location ~ .php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME .... ................................... ................................... }
위 구성은 .php 파일이 존재하는지 확인합니다. 존재하지 않으면 404 페이지가 반환됩니다.
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 nginx가 PHP 프로세스를 찾을 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

Linux에서는 다음 명령을 사용하여 nginx가 시작되었는지 확인하십시오. SystemCTL 상태 Nginx 판사 명령 출력에 따라 : "active : running"이 표시되면 Nginx가 시작됩니다. "Active : 비활성 (죽음)"이 표시되면 Nginx가 중지됩니다.

Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

PHP는 MySQLI 및 PDO 확장 기능을 사용하여 데이터베이스 작업 및 서버 측 로직 프로세싱에서 상호 작용하고 세션 관리와 같은 기능을 통해 서버 측로 로직을 처리합니다. 1) MySQLI 또는 PDO를 사용하여 데이터베이스에 연결하고 SQL 쿼리를 실행하십시오. 2) 세션 관리 및 기타 기능을 통해 HTTP 요청 및 사용자 상태를 처리합니다. 3) 트랜잭션을 사용하여 데이터베이스 작업의 원자력을 보장하십시오. 4) SQL 주입 방지, 디버깅을 위해 예외 처리 및 폐쇄 연결을 사용하십시오. 5) 인덱싱 및 캐시를 통해 성능을 최적화하고, 읽을 수있는 코드를 작성하고, 오류 처리를 수행하십시오.

PHP는 동적 웹 사이트를 구축하는 데 사용되며 해당 핵심 기능에는 다음이 포함됩니다. 1. 데이터베이스와 연결하여 동적 컨텐츠를 생성하고 웹 페이지를 실시간으로 생성합니다. 2. 사용자 상호 작용 및 양식 제출을 처리하고 입력을 확인하고 작업에 응답합니다. 3. 개인화 된 경험을 제공하기 위해 세션 및 사용자 인증을 관리합니다. 4. 성능을 최적화하고 모범 사례를 따라 웹 사이트 효율성 및 보안을 개선하십시오.

질문에 대한 답변 : 304 수정되지 않은 오류는 브라우저가 클라이언트 요청의 최신 리소스 버전을 캐시했음을 나타냅니다. 솔루션 : 1. 브라우저 캐시를 지우십시오. 2. 브라우저 캐시를 비활성화합니다. 3. 클라이언트 캐시를 허용하도록 nginx를 구성합니다. 4. 파일 권한을 확인하십시오. 5. 파일 해시를 확인하십시오. 6. CDN 또는 리버스 프록시 캐시를 비활성화합니다. 7. nginx를 다시 시작하십시오.

PHP와 Python은 고유 한 장점과 단점이 있으며 선택은 프로젝트 요구와 개인 선호도에 달려 있습니다. 1.PHP는 대규모 웹 애플리케이션의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 데이터 과학 및 기계 학습 분야를 지배합니다.
