Apache는 PHP 파일의 변경 사항을 읽지 않습니다.

Apache는 PHP 파일의 변경 사항을 읽지 않습니다.

저는 Apache와 PHP를 사용하여 CentOS6 서버에서 개발 중입니다. PHP 파일을 변경하고 저장하면 Apache가 변경된 파일을 읽지 못하는 것 같습니다. 여전히 이전 .php 파일을 처리 중입니다. 5~10분 후에 새 파일을 사용하기 시작합니다.

누군가 Apache가 변경된 .php 파일을 즉시 선택하도록 강제하는 방법을 말해 줄 수 있습니까?


업데이트: 파일을 Apache 서버로 옮겼는데 문제가 여전히 존재합니다(NFS 문제가 아닙니다). 그래서 Apache는 혼란스럽게도 몇 분 동안 변경된 파일을 읽지 않는 것 같습니다.

답변1

어쩌면 나는 당신과 같은 문제를 겪고 있는데 그것은 php.ini의 opcache 구성 때문일 것입니다. 그래서 재검증 빈도를 0으로 설정했습니다.

opcache.revalidate_freq=0

또는 opcache를 비활성화하세요.

opcache.enable=0

나중에 Apache 서버를 다시 시작하는 것을 잊지 마십시오.

답변2

Apache는 PHP 및 기타 구성 파일의 변경 사항을 적극적으로 모니터링하지 않습니다. 변경 사항을 다시 로드하도록 서비스에 지시해야 합니다.

# service httpd reload

또는 서버를 완전히 중지하고 시작합니다.

# service httpd restart

반면에 httpd.conf 파일(일반적으로 /etc/httpd/conf/httpd.conf)에서 mod_status를 활성화하고 다음을 추가하거나 주석 처리를 제거하여 서버가 데이터를 다시 로드하는 시기를 확인할 수 있습니다.

<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from .example.com
</Location>

여기서 " Allow from" 뒤에는 도메인, IP, 로컬 호스트(동일한 시스템에서 개발하는 경우 마지막 호스트) 또는 이들의 조합이 와야 하며 모두 공백으로 구분됩니다.

그런 다음 해당 위치에 대해 새로 생성된 특수 핸들러를 사용하면 /server-status( 에서와 같이 URL 서버 끝에 추가 http://www.server.com/server-status) 마지막 서버에 대한 정보를 포함하여 Apache 서버의 실행 상태에 대한 많은 정보를 볼 수 있습니다. . 구성된 시간.

답변3

PHP 코드 업데이트가 즉시 반영되지 않는 개발 컴퓨터에서도 비슷한 문제가 있었습니다. 설정을 편집 하고 지시어를 다음과 같이 설정하여 php.ini opcache문제를 해결했습니다 .

opcache.enable=0

답변4

데몬이 실행 중인 경우 변경 사항을 인식 php-fpm하려면 한 단계를 더 수행해야 합니다 php.ini. 단지 아파치를 다시 시작하는 것만으로는 충분하지 않습니다.

리눅스의 경우:

sudo kill-USR2PID

기본 프로세스의 PID를 지정합니다 php-fpm. 를 통해 프로세스 ID를 찾을 수 있습니다 ps auxwwf | grep php.

내 Amazon Drupal 인스턴스는 php-fpm이 프로세스로 실행됩니다. 이를 파악하는 데 시간이 걸렸습니다.

관련 정보