저는 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
이 프로세스로 실행됩니다. 이를 파악하는 데 시간이 걸렸습니다.