문제
많은 고객이있는 서버가 있습니다. 개발할 때는 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
파일, 어떤 경우에 아니요 전혀 자동로드.
제휴하지 않습니다 StackOverflow