#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 — нет.