Если для параметра debug
установлено значение true
в app/config.php
Laravel, существует ли способ ограничить результирующую страницу ошибок Whoops
с трассировкой стека на определенные IP-адреса, а IP-адреса, не отображаемые в этом списке, будут отображаться в определенном виде?
Благодарю.
Не построен в нет.
Но вы, вероятно, могли бы реализовать это довольно легко, захватив все исключения и только повторное металирование после того, как вы сравните IP-адрес пользователя.
Поэтому в app/start/global.php
вам нужно будет настроить «Обработчик ошибок приложений». В настоящий момент он фиксирует все исключения и просто записывает их с помощью Log::error
. Таким образом, вы можете сравнить IP-адрес пользователей с массивом действительных IP-адресов:
App::error(function(Exception $exception, $code) { Log::error($exception); $validIpAddresses = ['123.456.789.0', '321.654.987.0']; if (in_array(Request::getClientIp(), $validIpAddresses)) { throw $exception; } return View::make('error'); });
Файл config.php
(или app/config/app.php
) является файлом PHP, как и любой другой.
Поэтому никто не мешает вам указывать
'debug' => in_array($_SERVER['REMOTE_ADDR'], array('192.168.0.1','127.0.0.1')),
что приведет к тому, что debug
будет true
с некоторых IP-адресов, но не с другими.
Обновление : если вы используете CLI, мы можем захотеть
'debug' => array_key_exists('REMOTE_ADDR', $_SERVER) ? true /* Actually, whatever we want when going CLI */ : in_array($_SERVER['REMOTE_ADDR'], array( '192.168.0.1', /* List of allowed addresses */ '127.0.0.1' ))
Вы даже можете проверить «пароль пользователя», встроенный в запрос браузера (помните, что он выходит в ясности, если вы не используете SSL, не используйте «важные» пароли).
'debug' => (strpos($_SERVER['HTTP_USER_AGENT'], 'KLAATU-BARADA-NIKTO') > 0),
а затем использовать, скажем, плагин Firefox, чтобы изменить User-Agent вашего браузера и добавить пароль. Тогда у вашего браузера будет отладка, но никто другой.