Контроллер Laravel 8 не существует, пространство имен находится в маршрутах, и проблема существует только на веб-сервере apache, но работает локально

#php #laravel #namespaces

#php #laravel #пространства имен

Вопрос:

В настоящее время я пытаюсь заставить небольшой проект laravel 8 работать на веб-сервере apache. Он работает на локальном хосте с artisan и в xampp, однако выполнение точно такого же действия на веб-сервере apache, к которому у меня есть доступ, не работает.

Это мой контроллер с пространством имен и его именем:

пространство имен с именем контроллера

Это те функции, которые я пытаюсь использовать

    function showProfile()
    {
        return view("accountinfo");
    }
   function startup()
    {
        return view("landing");
    }
   function courseOverview()
    {
        return view("courses");
    }
 

Это пространство имен в маршрутах, которое должно работать, как показано в других ответах на похожие сообщения, а также в маршрутах, которые я пытаюсь использовать.

Пространство имен маршрута

маршруты

Это единственный контроллер, который не работает на сервере. Я использую Laravel Breeze для базовой аутентификации, и эти маршруты и контроллеры работают нормально. Я попытался добавить и удалить пространство имен, а также следующие команды, которые «работали» для других людей:

 php artisan clear-compiled 

php artisan optimize:clear

composer dump-autoload 
 

Ранее у меня были проблемы с разрешениями, которые мне удалось устранить для этой конкретной ошибки. Может ли этот тип ошибки возникать из-за подобной проблемы? Однако разрешения одинаковы для всех контроллеров аутентификации, а также для моего KnowledgeController. Дайте мне знать, если вам нужна дополнительная информация или код с моей стороны.

Здесь вы можете найти трассировку стека

Заранее спасибо!

Комментарии:

1. use ApphttpControllersKnowledgeController; однако имеет http все строчные буквы. Итак, если что-то чувствительно к регистру, что может быть проблемой? (в маршрутах)

2. Не могли бы вы поделиться всем кодом контроллера? Я думаю, что есть проблема, когда он пытается разрешить контейнер, используете ли вы внедрение зависимостей в конструкторе?

3. господи Иисусе, вот и все. Я не могу поверить, что я это пропустил. Да, пространства имен чувствительны к регистру. Большое спасибо, это была разочаровывающая пара часов

Ответ №1:

Пространства имен, похоже, чувствительны к регистру для веб-сервера, и мне не удалось поймать опечатку. Похоже, что Local artisan и xampp могут справиться с этим, даже если это неверно. У веб-сервера apache возникла проблема с этим. Это должно быть

 use AppHttpControllersKnowledgeController;
 

Комментарии:

1. Теперь вы узнали, что искать, когда получаете сообщение об ошибке несуществующего класса. 😉

2. Похоже, ваша локальная среда основана на Windows, а ваш веб-сервер apache основан на * nix. Файловая система Windows не чувствительна к регистру; * файловые системы nix. Вот почему Windows может найти файл, а * nix — нет.