문제

Windows XP에서 PHP 버전 5.2.11로 Symfony (1.2.9)를 실행하고 있습니다.

APC가 설치되어 있습니다 (버전 3.0.19)

PHP 스크립트를 실행하여 APC가 올바르게 작동하고 있음을 증명할 수 있습니다 (Works). 그러나 Symfony 조치에서 APC 호출을 사용하려고하면이 오류가 발생합니다 (Apache Error.log 파일).

apc-error]는 클래스 SFConfig를 재현 할 수 없습니다

아파치가 즉시 충돌합니다.

Symfony Sfapccache 래퍼를 사용한 다음 APC_* 함수를 직접 호출하려고 시도했습니다. 결과는 동일합니다. 왜 이런 일이 일어나고 있는지 아는 사람이 있습니까?

도움이 되었습니까?

다른 팁

오늘이 오류도 나에게도 일어 났으며, 왜 (가능한 다른 이유 중에서) 그것이 일어날 수있는 이유를 알게되었습니다.

APC는 클래스 네임 스페이스를 포함하여 모든 클래스를 완전히 자격을 갖춘 이름으로 정확하게 식별합니다. 불행히도 다양한 이름으로 동일한 클래스를 언급 할 수 있습니다.

예를 들어:

내 코드에 잘못된 "사용"명령문이 있었고, 이름이없는 클래스를 마치 네임 스페이스 내부에있는 것처럼 가져 왔습니다.

"MyClass"라고 말하는 클래스는 네임 스페이스 ""에 있었는데, 이는 올바른 자격을 갖춘 이름이 " myclass"라는 것을 의미합니다.

어느 시점에서 클래스는 자격이없는 이름 "MyClass"로 언급되었고 자동로드되었습니다. 다른 파일에서 i (잘못된)에서는 사용 문에 네임 스페이스 접두사가있는 클래스를 언급했습니다. 결과적으로 클래스는 (다시) 내 글로벌 __atoload () 메소드로 전달되었지만 다른 이름으로 전달되었습니다. 더 나쁘게하기 위해, 자동로드 방법은 어쨌든 클래스를 찾을만큼 똑똑했습니다.

즉시, 내 스크립트가 작동을 중단했고 APC는 [APC-Error]가 Apache Web Server Error.log에"클래스 클래스를 다시 사용할 수 없습니다 ... " 내 페이지는 더 이상 사용할 수 없었습니다.

이것은 APC 버그가 아니라 단순히 동작을 올바르게합니다.

내 경우에는 APC를 일시적으로 비활성화하는 데 도움이되었으며 (충돌에 관계없이 내 스크립트가 실행되도록) ECHO 명령문을 전달 된 매개 변수 목록을 생성하는 내 __ aquoad 함수에 연결했습니다. 잘못된 이름으로로드 된 클래스는 빠르게 나타나고 APC를 고칠 수 있습니다.

이것이 누군가를 돕기를 바랍니다.

Ive는 APC와 관련이 없기 전에이 오류가 있었으며 항상 캐시를 실행하는 데 도움이되었습니다. CLEAR : CACHE DIR에서 모든 파일이 삭제되었는지 확인하고 확인해야합니다.

PHP 5.2.11과 여러 APC 버전을 사용하여 개발 Windows 시스템에서 동일한 상황을 살고있었습니다. 설명 된 것과 동일한 상황에서 STAT = 0이 모두 작동하지만 STAT = 1을 설정하면 APACHE가 오류로 충돌합니다. 이 코드는 다른 Windows 시스템에서 작동하고 있으며, 그 옆에는 몇 달 동안 많은로드 된 Linux 프로덕션 서버에서 실시간입니다. APC와 관련된 버그가 없다고 확신합니다. OS를 다시 설치 한 후 컴퓨터에서 시작되었습니다.

나는 일부 수업에 대해 언급하는 데 시간을 보냈으며 일부 파일이 포함되어 있지만 특정 파일과 함께 작동한다는 것을 깨달았습니다. 내 코드를 점검하여 클래스 차이에 눈에 띄는 차이가 없음을 확인했습니다.

그런 다음 Zend Studio의 편집기와 함께 추가 공백을 추가하여 내 포함 된 파일을 모두 저장했습니다. 내가 아는 것은 바보처럼 보이지만 작동합니다 !!! 나는 여러 사람과 함께 프로젝트를 진행하고 있으며 SVN을 사용하고 있으며 모두 Notepad ++, EditPlus 등과 같은 다른 텍스트 편집기를 사용합니다 ...

그러나 바이트 마크 순서가 있거나없는 ANSI, UTF8과 같은 다른 구성을 가진 다른 편집기를 사용하여 파일을 저장하여 오류를 재현 할 수 없었습니다. 그러나 내 문제는 파일 형식 (인코딩, PC와 관련된 것입니다. /unix 모드). 오류를 재현하고 더 자세한 정보를 제공하고 싶지만 같은 문제가있는 다른 프로젝트에서 솔루션을 사용해 보았습니다.

나는이 문제에 대한 또 다른 관점을 줄 수 있기를 바랍니다.

나를 위해 이것을 해결 한 것은 내 요구가 같은 길을 가졌는지 확인하는 것이 었습니다.

예를 들어, 내가 얻은 오류는 다음과 같습니다.
[apc-error] Cannot redeclare class someClass

파일에서 AI에는 다음과 같은 것이 있습니다.
require_once '/path/to/someClass.php';

someclass.php와 동일한 디렉토리에 상주하는 파일 B에는 다음과 같은 것이 있습니다.
require_once 'someClass.php';

나는 APC 캐싱이 경로가 하나가 아닌 다른 파일에 대해 지정 되었기 때문에 동일한 파일이라는 것을 이해하지 못했다고 생각합니다.

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