문제
나는 다음 두 가지를 모두 시도했습니다.
ini_set('include_path', '.:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes');
그리고 또한 :
php_value include_path ".:/usr/share/php5:/usr/share/php5/PEAR:lib:app/classes"
.htaccess 파일에 있습니다.
실제로 두 방법 모두 일해 그러나 간헐적으로만.즉, 약 37페이지 요청에 대해 제대로 작동한 다음 약 42페이지 요청에 실패하여 require() 호출이 발생하여 사이트를 실질적으로 충돌시키는 치명적인 오류가 발생합니다.
무슨 일이 일어나고 있는지 알아보기 위해 어디서부터 시작해야 할지조차 모르겠습니다!
포함 경로에 현재 디렉터리를 복제한 것 같습니다.문자열에서 '.:' 중 하나를 제거해 보세요.
스크립트 버전은 원래
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . 'lib' . PATH_SEPARATOR . 'app' . DIRECTORY_SEPARATOR . 'classes');
따라서 .:.:기존 경로에서 왔습니다.
ini_get('include_path')
어쨌든 제거하려고 시도했지만 문제가 지속됩니다.
해결책
이 문제는 5.2.5의 PHP 버그와 관련된 것으로 밝혀졌습니다.
include_path에 "admin_flag"를 설정하면 일부 요청에서 포함 경로가 비어 있게 되었으며 Plesk는 기본 구성에서 admin_flag를 설정합니다.PHP 업데이트로 문제가 해결되었습니다.
다른 팁
시도해 보셨나요? set_include_path()?.이점으로 이는 실패 시 false를 반환하므로 최소한 발생을 포착하고 의미 있는 디버그 데이터를 생성할 수 있습니다.또한 상수를 사용해야 합니다. PATH_SEPARATOR
Windows/*nix 간에 다르기 때문입니다.
구체적인 예를 들면 다음과 같습니다.
set_include_path('.' . PATH_SEPARATOR . './app/lib' . PATH_SEPARATOR . get_include_path());
(끝의 get_include_path()는 ini / htaccess 경로가 유지되도록 설정된 모든 것을 의미합니다)
포함 경로에 현재 디렉터리를 복제한 것 같습니다.문자열에서 '.:' 중 하나를 제거해 보세요.