2013-08-26 6 views
1

Недавно я развернул проект Laravel 4 в Интернете после обширного тестирования на месте, без проблем в автономном режиме, но несколько странных после того, как он стал жить.Изменение имени файла контроллера Laravel 4 включает в себя ошибку

Проект имеет репозиторий Git, и один контроллер иногда не может быть замечен моей IDE (PHPStorm) как измененный в репозитории - я бы вносил изменения, пытался совершить, и это покажет ошибку, заявив, что есть без изменений. Кроме того, в какой-то момент файл был каким-то образом переименован в «news.php» из «News.php». Я исправил случай файла обратно в верхний регистр. Я не переименовал ничего другого в проекте. Все ссылки на этот класс (и для этого файл) остались «Новости».

Сегодня утром с использованием диспетчера новостей вышло сообщение об ошибке 500, в котором говорилось, что он не может включить этот файл. Я проверил файловую систему FTP и подтвердил, что файл присутствует и нетронутым, с ним ничего не случилось. После многих разочарований я переименовал файл в «news.php» (строчный), и все снова работало. Я снова попытался переименовать его в «News.php», и ошибка 500 вернулась.

Другая странная вещь, которая произошла, заключалась в том, что ссылка на действие контроллера была строчной (надзор с моей стороны?), И случайным образом приложение разбилось с ошибкой класса 500, не найденной. Я тестировал приложение локально, и он отлично работал с строчными или прописными буквами, переименование ссылки контроллера на «Admin_News» из «admin_news» решило проблему на производственном сервере.

Есть ли у Laravel 4 какой-то кеш, который может ссылаться на «news.php» и отказываясь использовать «News.php?»? Любые идеи об этом странном поведении?

+1

ЗАКАНЧИВАТЬ приложение/хранение/compiled.php, которые могут быть источником ваших бед ,Кроме того, на каком компьютере вы работаете? Является ли файловая система нечувствительной к регистру? – fideloper

+0

Проект был создан по-настоящему на Windows, Mac и Linux. Что бы ни было в то время. Хорошее предложение по составлению, я проверю, когда я начну с утра. – NightMICU

+0

Я только что проверил и у меня нет 'приложение/хранение/compiled.php' - это это обычно присутствует в Laravel 4? И не уверен, если это будет иметь значение в этом случае, но я использую rtablada пакет-инсталлятор, https://github.com/rtablada/package-installer – NightMICU

ответ

8

при изменении маршрутов или контроллеров, попробуйте

composer dump-autoload 

и восстановит автозагрузчик с новыми именами/содержанием

+0

Спасибо, это сделал трюк! Случилось снова с чистого листа .. ты спас день – NightMICU

0

Возможно, вы хотите проверить генератор генератора Laravel IDE для шторма PHP. Вы можете получить его из github: https://github.com/barryvdh/laravel-ide-helper Я думаю, у вас возникли проблемы с рефакторингом PHP Storm, обновляющими некоторые части вашего кода без запроса. В любом случае генератор поможет вам выявить многие из этих проблем из-за шторма PHP и облегчить весь процесс разработки.

Надеюсь, это поможет.

+0

Да, давно использую помощника, любите его. Забыл о рефакторинге, хорошая мысль. – NightMICU

0

У Laravel есть доступ к моделям и контроллерам. Я всегда называю файлы похожими на имя, данное классу (например, если класс был назван BaseController, файл должен иметь имя BaseController.php). Но, возможно, использование PHP Storm делает действие неконтролируемым.

1

Первое, что пришло на ум, когда я читаю ваш вопрос вы развиваются на компьютере окна и развертывания на сервере Linux (или наоборот?)

У меня была аналогичная проблема на моем наборе я разрабатываю на машине Windows на работе, и мы развертываем ее на сервере Linux. Файловая система на окнах кажется нечувствительной к случаю, поэтому news.php = News.php, тогда как файловая система linux чувствительна к регистру. Это также имеет место с именами пространства имен./App/Models/Auth =/App/models/Auth для окон, но не для Linux. Это вызвало несколько головных болей, прежде чем я понял это.

Теперь я начал использовать Vagrant для создания локальной области разработки, которая является зеркальным отображением системы, которую я развертываю, чтобы иметь значение, если она работает на одном, она будет работать на другом.

+0

Хорошее предложение. Я нажимаю все на BitBucket, а затем вытаскиваю его на любую машину, которую я использую, - я код на компьютере Mac дома, Windows или Linux на дороге. Во всех случаях я использую PHPStorm. Веб-хост действительно основан на Linux. – NightMICU

+0

Бродяга выглядит потрясающе, спасибо за то, что он повернулся ко мне! – NightMICU

Смежные вопросы