문제

나는 다음 두 가지를 모두 시도했습니다.

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() 호출이 발생하여 사이트를 실질적으로 충돌시키는 치명적인 오류가 발생합니다.

무슨 일이 일어나고 있는지 알아보기 위해 어디서부터 시작해야 할지조차 모르겠습니다!


@cnote

포함 경로에 현재 디렉터리를 복제한 것 같습니다.문자열에서 '.:' 중 하나를 제거해 보세요.

스크립트 버전은 원래

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 업데이트로 문제가 해결되었습니다.

http://bugs.php.net/bug.php?id=43677

다른 팁

시도해 보셨나요? 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 경로가 유지되도록 설정된 모든 것을 의미합니다)

포함 경로에 현재 디렉터리를 복제한 것 같습니다.문자열에서 '.:' 중 하나를 제거해 보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top