2014-12-16 3 views
1

Я использую Laravel 4.1 для написания приложения. По какой-то причине мне нужно отключить отладку во всех средах, включая производство, но мне нужно предоставить пользователям возможность включать режим отладки без необходимости изменять файлы конфигурации (приложение.php), когда это необходимо (это означает, что во время выполнения)Laravel 4.1 - Включить отладку во время выполнения

Есть ли способ сделать это? Я попытался изменить параметры отладки в App :: раньше, но это не кажется, что правильным решением (обработчики исключений уже зарегистрированы в этой точке)

Update:
В последнем абзаце я сказал

обработчики исключений уже зарегистрированы в этой точке

Этот комментарий вводит в заблуждение, я думаю. В любом случае регистраторы исключений должны быть зарегистрированы.
Реальная проблема, которую мне нужно решить: как изменить, какой дисплей (plainDisplayer или debugDisplayer) использовать?

Это решение принято во время выполнения (когда исключение фактически встречается,) на основе значения переменной ($ отлаживать) в Осветите \ Exception \ Handler

app('exception')->setDebug(true) Вызов делает обработчик исключений для использования отладки Displayer, но я не уверен, что это правильный способ сделать это, особенно если я собираюсь поместить этот код в App :: before filter

+0

Мы делаем 'Config :: set ('app.debug', true)' в приложении :: перед использованием значения сеанса без каких-либо проблем. – ceejayoz

+0

@ceejayoz Спасибо. Как я уже сказал в своем вопросе, я уже пробовал это, но не получил желаемых результатов. Если это сработает для вас, тогда я должен проверить и увидеть, что что-то не так с моим кодом. – Nima

+0

@ceejayoz Не могли бы вы предоставить более подробную информацию? Это именно то, что я хочу сделать. – Nima

ответ

3

Вы можете редактировать настройки конфигурации с помощью класса Config. Это отредактирует настройки для текущего запроса в любой среде. При этом вы можете установить или получить значение отладки, как так:

Config::set('app.debug', true); 
+0

Спасибо. Я знаю это, но я на самом деле спрашиваю _where_, я должен поместить этот код? – Nima

1

Почему бы вы позволить пользователям видеть вашу внутреннюю отладку приложения, которое звучит как кошмар безопасности. Пользователи могут создавать ошибки и потенциально получать конфиденциальную информацию, такую ​​как ключи API, информацию о базах данных и т. Д.

Почему бы не сделать ошибки броузера/ловушки в вашем приложении, показать пользователю приятный вид и занести в журнал фактические ошибки где-то вдали от просмотра пользователями?

+1

Фактически, ошибки уже регистрируются по умолчанию в 'app/storage/logs/laravel.log' – lukasgeiter

+0

Только разработчики будут иметь доступ к этой функции, и мы не сможем использовать файлы журнала, потому что у разработчиков нет доступа к ним – Nima

+0

@Nima Есть ли какая-либо причина не использовать встроенные функции Laravel в среде, чтобы включить отладку для разработчиков? Разработка/отладка не должна выполняться на производственном сервере. –

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