2015-11-22 3 views
0

В настоящее время я строю систему Laravel 5.1, которая автоматически развертывается на нескольких серверах в несколько этапов (локальная, тестовая и производственная). К сожалению, у меня проблема с оптимизированным загрузчиком классов. Во время развертывания Composer запускается и через файл composer.json две команды php artisan clear-compiled и php artisan optimize работают без проблем.Отключить оптимизированный загрузчик классов в Laravel?

Моя проблема заключается в том, что Laravel в течение некоторого времени во время выполнения страницы пытается записать в /bootstrap/cache/services.json, но это не сработает, поскольку (системный) пользователь, создавший эту папку, не совпадает с пользователем, который пытается записать на file (Также не имеет смысла, что он пытается оптимизировать, так как файл оптимизатора уже создан).

  • Можно ли отключить оптимизатор класса «на лету»? (И если это так, каковы последствия?)

Перед тем, как «вы должны просто изменить права доступа ...», я хотел бы указать, что в настоящее время это не жизнеспособное решение. Все versionized, поэтому папка на сервере называется что-то вроде server/project/20151122192701/laravel, и я не думаю, что наши технические парни интересуются изменения прав доступа каждый раз, когда мы совершаем производство :)

ответ

0

я в конечном итоге удаление php artisan clear-compiled и php artisan optimize из composer.json, чтобы предотвратить выполнение команд при совершении. Я также !services.json до /bootstrap/cache/.gitignore (чтобы сделать его обязательным) и совершил services.json с новыми правами на запись (755).

Это не позволяет пользователю развернуть удалять services.json и воссоздавать его разрешения не-записи ...

У меня были другие проблемы с Laravel также кэшировать взглядов и сессий, но это была решена путем кэширования представлений в системная временная папка (я знаю, что это, вероятно, не лучшее решение, но она работает) и использует memcached для сеансов.

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