在Laravel的debug
中将true
设置为app/config.php
时,有没有办法将带有堆栈跟踪的结果Whoops
错误页面限制为某些IP地址,而不是IP在该列表上显示特定视图?
感谢。
答案 0 :(得分:4)
不是建于否。
但你可以通过捕获所有例外来轻松实现这一点,并且只有在比较用户的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');
});
答案 1 :(得分:2)
config.php
(或app/config/app.php
)文件是一个与其他文件类似的PHP文件。
所以没有人阻止你指定
'debug' => in_array($_SERVER['REMOTE_ADDR'], array('192.168.0.1','127.0.0.1')),
这会导致debug
来自某些IP地址true
,而不是其他地址。
更新:如果从CLI运行,我们可能需要
'debug' => array_key_exists('REMOTE_ADDR', $_SERVER)
? in_array($_SERVER['REMOTE_ADDR'], array(
'192.168.0.1', /* List of allowed addresses */
'127.0.0.1'
))
: true /* Actually, whatever we want when going CLI */
;
您甚至可以检查浏览器请求中嵌入的“用户密码”(请记住,除非您使用SSL,否则它将以明文形式显示;请勿使用“重要”密码)。
'debug' => (strpos($_SERVER['HTTP_USER_AGENT'], 'KLAATU-BARADA-NIKTO') > 0),
然后使用Firefox plug-in编辑浏览器的用户代理并添加密码。然后你的浏览器将进行调试,但没有其他的。