Класс не найден с автозагрузкой composer на разных серверах - PullRequest
0 голосов
/ 28 мая 2020

У меня очень простое приложение 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 / не должно хватить, чтобы классы автозагрузки работали нормально?

1 Ответ

1 голос
/ 30 мая 2020

Путь к вашему файлу src/content/test/Sandbox.php и согласно PSR-4 он должен быть src/Content/Test/Sandbox.php - на Windows это не имеет значения, но на Linux это имеет значение.

...