Я работал над проектом на моей локальной машине (под управлением OS X с сервером Cake), используя CakePHP 3 Beta. Иногда я копирую этот проект на удаленный тестовый сервер (использующий Ubuntu с Apache).
В прошлый раз, когда я копировал все файлы на удаленный сервер, бета-версия 2 была самой новой версией, и сайт прекрасно работал на обеих машинах.
Когда вышла бета-версия 3, я обновил свой локальный проект и продолжил работу над ним на локальной машине, не сталкиваясь с какими-либо проблемами.
Сегодня я скопировал весь проект на тестовый сервер, так же, как он находится на моей машине (конечно, корректируя конфигурации базы данных), но на этот раз происходит нечто странное:
Когда я получаю доступ к URL-адресам, как http://www.example.com/controller/action Я получаю ошибку Missing Controller, как видно на скриншоте ниже:
Я следовал соглашениям, как видно на документация, поэтому мой контроллер — это класс UsersController внутри файла UsersController.php
Но если я получу доступ http://www.example.com/Users/action, например, это просто работает.
Имейте в виду, что те же самые файлы работают на моем локальном компьютере с использованием строчных URL-адресов, так что это не просто опечатка или неуместный файл.
Это происходит для всех моих контролеров.
Должен ли я теперь следовать соглашениям об именах, страница ошибок предлагает мне и первым пользователям строчные буквы на всех моих контроллерах?
Это ошибка или я что-то не так делаю?
Если вам нужна любая другая информация, не стесняйтесь спрашивать.
Спасибо за помощь мне!
С наилучшими пожеланиями,
Даниил
Вам не хватает подходящих маршрутов, которые повернут users
в Users
чтобы соответствовать имени файла UsersController.php
Это видно из сообщения об ошибке, которое говорит usersContoller
пропал, отсутствует.
Он работает на вашем локальном компьютере, поскольку файловая система OS X по умолчанию нечувствительна к регистру, в отличие от Ubuntu, которая чувствительна к регистру.
Если вы недавно обновили ядро, RouteBuilder::fallback()
вызов, который присутствует в маршрутах приложения по умолчанию, может отсутствовать InflectedRoute
аргумент, который не был необходим раньше.
Итак, проверьте ваши маршруты и обновите шаблон вашего приложения, если это необходимо.
https://github.com/cakephp/app/commit/4719b42f9db0d80b3dd22edc6a4476566dbb0215
Других решений пока нет …