문제

많은 고객이있는 서버가 있습니다. 개발할 때는 EINT.PHP를 포함합니다. __autoloader() 파일이 포함 된 함수 dir_name(__FILE__)."/classes/".$className 예를 들어.

그러나 어제 나는 서버가 특정 클래스를 찾을 수 없다는 것을 알았습니다. 나는 Apache를 다시 시작한 다음 다시 작동했습니다.

모든 고객은이 고유의 init.php를 가지고 있습니다.

customer1/init.php            : holds __autoload()
customer1/classes/class.php

customer2/init.php            : holds __autoload()
customer2/classes/class.php

나는 약간의 테스트를하지 않았으며 문제를 재현하기 전에 누군가 내 질문에 대답 할 수 있기를 바랍니다. 그러나 동시에 2 개 이상의 요청을받을 때 PHP가 잘못된 자동로드 기능을 수행 할 수 있다고 생각하십니까?

spl_autoload_register는 솔루션입니까?

아이디어 나 브레인 스토밍에 감사드립니다.

도움이 되었습니까?

해결책

내 생각에 __AutoLoad () 함수 중 하나에 오타가 있어야하거나 잘못된 init.php 파일을 포함하고 있다고 생각합니다.

또한 dir_name ()가 존재하지 않으므로 변경해야합니다. 더 이름() 대신 또는 새로운 것을 사용할 수도 있습니다. 멍청이 끊임없는 PHP> = 5.3을 사용하는 경우 동일한 효과에 대해.

편집하다: 귀하의 의견에 비추어 사용해야합니다.

require(realpath(dirname(__FILE__)) . '/classes/' . $className);

또는

require(realpath(__DIR__) . '/classes/' . $className);

다른 팁

각 PHP 요청은 완전히 분리되어 있습니다. 실제로 두 가지 기능을 사용하는 것은 불가능합니다. __autoload() 동일한 PHP 요청에서 방해 할 수 없습니다. 가능한 문제 :

  • 당신은 잘못된 고객을 포함하고 있습니다 init.php
  • 당신은 포함하는 것을 잊었습니다 init.php 파일, 어떤 경우에 아니요 전혀 자동로드.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top