온라인과 로컬 호스트에서 spl_autoload_register의 다른 동작
-
21-12-2019 - |
문제
나는 다음과 같은 디렉토리 구조를 가지고 있으며 모든 수업을 그 안에 넣습니다. classes/
아래에 표시된 것처럼 header.php
둘 다 모든 파일을 호출하고 모든 파일이 공유하는 기타 중요한 설정이 있습니다.
이제 내가 사용하면 spl_autoload_register()
이 방법:
spl_autoload_register(function($class){
include 'classes/'. $class .'.class.php';
});
내부에 inc/header.php
파일을 제출하고 이 전화로 전화하세요 header.php
내로부터 index
파일을 다운로드하면 로컬 호스트에서는 제대로 작동하지만 모든 스크립트를 있는 그대로 라이브 호스트에 업로드하면 다음과 같은 오류가 발생합니다.
Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9
Line 9
은 spl_autoload_register()
어떻게 이런 일이 일어날 수 있는지 이해가 안 되고, 누군가가 전혀 아이디어를 갖고 있기를 바랍니다.
감사해요
해결책
내 의견이 무엇을 의미하는지 보여주기 위해 index.php 파일에 다음 코드를 추가하고 다른 파일에서 자동 로더를 제거하십시오.
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
inc/header.php의 경우:
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/../classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
제휴하지 않습니다 StackOverflow