У меня очень простое приложение PHP / Composer со следующей структурой:
- src
- content
- test
- Sandbox.php
Sandbox. php имеет только функцию stati c для печати «test», а ее пространство имен
namespace MyApplication\Content\Test;
Моя автозагрузка. php имеет MyApplication со свойством «автозагрузка».
"autoload" : {
"psr-4": {"MyApplication\\": "src/"}
},
Я запускаю composer install --no-dev
в среде Windows с XAMPP и в тесте. php файл Я делаю (для очень простого теста):
$autoloadFile = __DIR__ . '/wp-content/plugins/sandbox/vendor/autoload.php';
require $autoloadFile;
echo 'autoload = ' . file_exists($autoloadFile);
echo '<br />';
echo 'class_exists = ' . class_exists('MyApplication\Content\Test\Sandbox');
Когда я запускаю этот тест. php файл локально, он работает отлично. MyApplication загружает класс Sandbox.
Однако, когда я выпускаю его на свой сервер, который является сервером на базе Linux, но работает на той же PHP версии , класс Sandbox не найден .
Я убедился, что моя папка / vendor / также правильно загружена.
Мне интересно, возникает ли проблема из-за того, что я запускаю composer install на Windows среда, в то время как она должна выполнять ту же команду на моем сервере (что я не могу в данный момент). Разве загрузки папки / vendor / не должно хватить, чтобы классы автозагрузки работали нормально?