Как указал @ rob006, похоже, что вы работали / запускали свое приложение в локальной файловой системе Windows, которая сохраняет регистр, но не с учетом регистра .
Когда вы сначала вызываете класс пространства имен напрямую или через оператор use
, он передает это полное имя класса как $className
в yii\BaseYii\autoload::($className)
(глобальный обработчик автозагрузки класса Yii2), который, в свою очередь, пытается include
соответствующий файл класса, если он найден.
Итак, на вашем локальном компьютере Windows, когда вы используете backend\models\KotaBandara
, он найдет и включит любой файл, связанный с соответствующим псевдонимом пути, без учета регистра, таким образом, он найдет любой из:
@backend/models/KotaBandara.php
@backend/models/Kotabandara.php
@backend/models/kotabandara.php
@backend/models/KoTaBaNdArA.php
В любом случае может быть только 1 целевой файл с этой последовательностью путей / символов.
Однако, когда вы переносите этот код в систему Ubuntu, которая учитывает регистр и с учетом регистра , между KotaBandara.php
и * 1037 будет определенная разница * и фактически оба файла могут существовать бок о бок, в отличие от Windows.
Итак, вам нужно быть точным здесь - в Ubuntu, use backend\models\KotaBandara
вызовет автозагрузчик, чтобы найти только файл, путь и регистр которого совпадают, т.е. KotaBandara.php
. Если вы назвали файл kotabandara.php
, он будет найден в Windows, но не в Ubuntu!