>백엔드 개발 >PHP 문제 >Mac nginx가 PHP를 구문 분석하지 않으면 어떻게 해야 합니까?

Mac nginx가 PHP를 구문 분석하지 않으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2021-07-23 10:02:022701검색

php를 구문 분석하지 않는 mac nginx에 대한 솔루션: 1. 올바른 이름으로 새 파일을 cp합니다. 2. "php-fpm --fpm-config..." 명령을 실행합니다. 3. www.conf라는 파일을 cp합니다. ;4. 솔루션 프로세스를 종료합니다.

Mac nginx가 PHP를 구문 분석하지 않으면 어떻게 해야 합니까?

이 글의 운영 환경: macOS10.15 시스템, PHP7.1 버전, MacBook Air 2019 컴퓨터

mac nginx가 PHP를 구문 분석하지 않으면 어떻게 해야 하나요?

nginx에서 PHP를 배포할 때 Mac에서 직면하는 함정

누군가로부터 웹 사이트 배포를 도와달라는 요청을 받은 후 먼저 로컬 nginx에서 디버깅하고 싶었습니다. 처음에 페이지를 열면 403이 나오더군요. 예전에 봤던 내용인데, nginx의 권한 문제였습니다. 권한을 변경한 후 PHP 페이지에 접속했을 때 파싱하지 않고 바로 다운로드한 것을 발견했습니다. 내 컴퓨터에 PHP 환경이 없을 수도 있다는 것을 기억하여 PHP를 다운로드했지만 여전히 동일한 문제가 발생했습니다. 간단히 말해서, 저는 PHP에 그다지 익숙하지 않기 때문에(이전에는 xampp와 같은 소프트웨어를 사용했습니다), 완료하는 데 시간이 좀 걸렸습니다.

가장 먼저 이해해야 할 점은 nginx 자체는 PHP를 처리할 수 없으며 이는 단지 웹 서버일 뿐이라는 것입니다. 프런트 엔드에서 PHP를 요청하면 nginx는 처리를 위해 인터페이스를 PHP 인터프리터로 보낸 다음 결과를 반환해야 합니다. 프론트엔드. 일반적으로 nginx는 처리를 위해 fastcgi 관리 프로세스에 요청을 보냅니다. nginx에 구성된 대로:

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;#这里原来不是$document_root,搞得我很蒙,还好网上查到改好了,不然会报file not found
    include        fastcgi_params;
}

fastcgi를 시작하려면 여기에서 php-fpm이 사용됩니다. 이것은 PHP fastcgi 관리자이며, PHP 언어에만 사용됩니다(이전 버전의 PHP는 php-fpm을 별도로 다운로드해야 합니다. 저는 php를 사용합니다). -fpm은 이미 이것을 통합했습니다).

여기에는 이상한 질문이 많이 있습니다.

  • php-fpm

처음 실행 실패: /private/etc/php-fpm.conf 파일을 찾을 수 없습니다.

해결책: 하지만 이 디렉토리 파일에는 php-fpm.conf.default가 있습니다. 따라서 올바른 이름으로 새 파일을 복사하세요

  • php-fpm을 두 번째로 실행하세요

실패: /usr/var/log/php-fpm.log를 찾을 수 없습니다.해결책: 해당 디렉토리가 없습니다. 전혀 conf 파일에서 변경했는데 효과가 없었습니다. 다음 명령을 통해 php-fpm을 실행할 수밖에 없었습니다. (나중에 이 명령을 사용하여 실행하겠습니다)

php-fpm --fpm-config /private/etc/php-fpm.conf  --prefix /usr/local/var

    Run php-fpm 세 번째
  • Failed: No pool defined. at least one pool section must be specified in config file
  • 해결 방법: /etc/php-fpm.d/ 디렉토리로 이동하여 www.conf.default 파일을 찾고, www.conf

    php-fpm을 실행하세요. 네 번째
  • 실패: 포트가 사용 중입니다.

해결책: 이 프로세스를 종료합니다.

sudo lsof -i tcp:9000#포트 9000을 점유하고 있는 프로세스 번호를 찾으세요

kill -9 port#Kill!

    5번째 php-fpm 실행
  • 성공!

##보충:

nginx를 구성할 때 약간의 차이가 있습니다. Mac에서는 php-fpm이 9000 포트를 직접 수신하지만 서버에서는 php7.0-fpm.sock을 수신하지만 그렇지 않습니다. 이 방법은 더 빠를 수 있으므로 php

를 성공적으로 실행하려면 nginx의 PHP 구성에서

fastcgi_pass 127.0.0.1:9000;

fastcgi_pass unix:/run/php/php7.0-fpm.sock;

로 변경해야 합니다. 권장 학습: "

PHP 비디오 튜토리얼

"

계속 추가하세요.

매우 흥미로운 점은 27m의 동영상을 업로드하려고 할 때 nginx에서 413 Request Entity Too Large를 직접 보고했지만 설정하지 않았는데...

Add

server {
    ...
    client_max_body_size 80m;
    ...
}

nginx 구성에서 구성을 다시 읽어보세요( set-enabled/default), 서버를 다시 시작하세요

nginx -s reload
service nginx restart

그런 다음 php.ini를 수정하고 두 가지 구성을 수정해야 합니다

upload_max_filesize = 80M
post_max_size = 80M

그런 다음 php-fpm 프로세스를 종료하고 다시 시작하세요~

ps: 선생님 정말 전혀 조사하지 않습니다... mp4를 업로드할 수 없습니다. 단지 이 유형이 시스템에 추가되지 않았다는 것뿐입니다. 이것을 직접 찾아야 합니다... 불편함:(

참고: 이제 더 권장됩니다. Ubuntu에서 apt-get 대신 apt를 사용하려면... 이제 변경할 시간입니다

위 내용은 Mac nginx가 PHP를 구문 분석하지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.