Существует таинственная проблема с нашим заряжания:require_once не может загрузить существующий файл на Windows 10 (работает на Linux)
function psr4_default_autoload($class)
{
// project-specific namespace prefix
$prefix = 'basefolder\\';
// base directory for the namespace prefix
$base_dir = SOURCE_DIR . '/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require_once $file;
}
}
SOURCE_DIR
абсолютный путь. В противном случае это оригинальный пример автозагрузчика psr4: https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md
Этот автозагрузчик работает на моем ПК с Linux и на нашем сервере. Однако в Windows file_exists($file)
возвращает true, но require_once $file;
не будет работать. Если мы echo $file
, он возвращает именно файл, который мы хотим загрузить, и файл также существует именно там.
Сообщение об ошибке:
Fatal error: Class 'basedir\DatabaseAbstraction\AEntity' not found in C:\xampp\htdocs\xyz\classes\DatabaseAbstraction\Entity\UserLogin.php on line 14
Эта линия: class UserLogin extends AEntity
. Контекст:
namespace basedir\DatabaseAbstraction\Entity;
use basedir\DatabaseAbstraction\AEntity;
class UserLogin extends AEntity
любые идеи?
На данный момент я сохраню свой ответ, потому что вы все равно столкнулись с проблемой. Что касается вашего редактирования, что такое содержимое '$ file', когда ошибка срабатывает? – NaeiKinDus
все в порядке с '$ file'. В « Php» отсутствовал php ... – Tekay37
, по крайней мере, у вас сейчас что-то работает. Может быть, хорошо добавить чеки для этого, хотя;) – NaeiKinDus