PHP:autoloader can';我找不到文件
我正在使用autoloader按名称空间加载类,它在本地主机上运行良好,但在联机服务器上运行不正常。PHP:autoloader can';我找不到文件,php,autoloader,Php,Autoloader,我正在使用autoloader按名称空间加载类,它在本地主机上运行良好,但在联机服务器上运行不正常。 当Autoloader.php加载类时,php向我显示此错误: Warning: require(\..\backoffice\controllers\EquipementsManager.php) failed to open stream: No such file or directory 但是我确信路径是正确的,并且文件equipmentsmanager.php存在于该路径中!这意味着
当
Autoloader.php
加载类时,php向我显示此错误:Warning: require(\..\backoffice\controllers\EquipementsManager.php) failed to open stream: No such file or directory
但是我确信路径是正确的,并且文件equipmentsmanager.php
存在于该路径中!这意味着autoloader使用正确的路径正确地加载类,但是PHP一直给我没有这样的文件或目录
错误Autoloader.php的代码:
<?php
/**
* Class Autoloader
*/
class Autoloader{
/**
* Enregistre notre autoloader
*/
static function register(){
spl_autoload_register(array(__CLASS__, 'autoload'));
}
/**
* Inclue le fichier correspondant à notre classe
* @param $class string Le nom de la classe à charger
*/
static function autoload($class){
require '\\..\\'.$class . '.php';
}
}
我还尝试了这个\uuuuu DIR\uuuu.\\\\\\\'.$class.'。php'
仍然存在同样的问题,可以在本地主机上工作,但不能联机。今天编辑(20/02/2016):
我将autoload()函数编辑为:
static function autoload($class){
$file = (strpos($class, 'backoffice') === false) ? $class : str_replace('\\', DIRECTORY_SEPARATOR, $class);
require $file . '.php';
}
现在我的文件已正确加载,但出现另一个错误:require(JsonSerializable.php) [function.require]: failed to open stream: No such file or directory
我使用\JsonSerializable接口
将我的对象转换为jason数组,类似这样:namespace backoffice\entities;
/**
* PropertyType
*/
class PropertyType implements \JsonSerializable
{
}
你知道这个界面在SPL中,为什么他不知道 试试看
$require = str_replace('\\', DIRECTORY_SEPARATOR, '..\\'.$class.'.php');
require($require);
尝试更改文件的权限可能会起作用。chmod 777 path/to/file.phpPost您的
Autoloader.php
.str\u replace('\\',目录分隔符,$class)的代码。您的本地主机是Win,服务器nix*?@Dmitry抱歉仍然无法工作!我不明白为什么“\\\\\\\\.$class.”。php'
可以在本地主机上工作。这引用了服务器根文件夹中的一个文件,这是非常不寻常的。您可以发布用于创建EquipmentsManager
对象的代码吗?我正在使用autoloader来避免这种情况,而使用namespace.Updated。你能试试吗?
$require = str_replace('\\', DIRECTORY_SEPARATOR, '..\\'.$class.'.php');
require($require);