나는 CentOS 6에서 Capistrano로 PHP 배치를 설정하고 흥미로운 문제가 발생했습니다. 방법 카피 스트라 노의 작품은,이 같은 폴더를 설정합니다Capistrano Symlinks Cached?
- /var/www/myapp.com/
- 출시 을 공유
- 전류 (IN/릴리스 최신 버전에 심볼릭 링크)
- 20130826172737
- 20130826172114
"현재"심볼릭 링크를 보면 가장 최근의 릴리스를 가리 킵니다. 처음에는 웹 응용 프로그램을 열 때 모든 것이 정상적으로 작동했습니다. 새 릴리스를 배포 한 후 현재 폴더의 폴더가 새 릴리스를 올바르게 가리키고 있지만 웹 응용 프로그램은 이전 릴리스 (Capistrano 정리 프로세스에서 삭제됨)에서 파일을로드하려고 시도합니다. 또한 가상 호스트는 /var/www/myapp.com/current/Public을 가리 키도록 구성됩니다.
어떤 방식 으로든 심볼릭 링크가 캐시되어 있습니까?
(내 프레임 워크를 초기화) 실패 특정 PHP 코드는 이것이다 : 현재 /var/www/app.com/current/Public에있는 index.php를에
require_once dirname(dirname(__FILE__)) . '/App/App.php';
App\App::run();
/index.php.
내 아파치 오류 로그를 보여
PHP Fatal error: require_once(): Failed opening required '/var/www/myapp.com/releases/20130826172237/App/App.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/myapp.com/releases/20130826172237/Public/index.php
그리고 현재 심볼릭 링크 쇼 : 후자는 이전 버전을했다
분명히 20130826172641current -> /var/www/zverse/releases/20130826172641
= 20130826172237!.
내가 볼 수있는 아이디어 나 영역은 무엇입니까?
딸꾹질 인 것 같습니다. 나는 약 10 분을 기다렸다가 다시 시험해 보았다. 그것이 일종의 아파치 최적화 였는지 궁금하다. –
PHP의 realpath 캐시를 비활성화하거나 [mod_realdoc] (https://github.com/etsy/mod_realdoc)을 사용하면이 문제는 서버를 다시 시작하지 않고도 사라집니다. – Mahn
CentOS에서 nginx 서버와 동일한 문제가 발생하면 '현재'심볼릭 링크가 최신으로 업데이트되지 않습니다. – Nimbosa