Php 按IP地址限制Laravel错误日志

Php 按IP地址限制Laravel错误日志,php,laravel,laravel-4,Php,Laravel,Laravel 4,当在Laravel的app/config.php中将debug设置为true时,是否有任何方法将堆栈跟踪的结果Whoops错误页面限制为特定IP地址,并且不在该列表中的IP显示为特定视图 谢谢。不是内置的否 但是,通过捕获所有异常,并在比较用户的IP地址后重新抛出异常,您可能很容易实现这一点 因此,在app/start/global.php中,您需要配置“应用程序错误处理程序”。目前,它捕获所有异常并简单地用Log::error记录它们。因此,您可以将用户IP地址与有效IP地址数组进行比较: A

当在Laravel的
app/config.php
中将
debug
设置为
true
时,是否有任何方法将堆栈跟踪的结果
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')),
这将导致来自某些IP地址的
debug
true
,而不是其他IP地址

更新:如果从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,否则它会被清除;不要使用“重要”密码)


然后使用,例如,编辑浏览器的用户代理并添加密码。然后,您的浏览器将进行调试,但没有其他功能。

这有点违背了Laravel如何调试东西的许多要点。关键是在开发中运行调试模式,然后在它进入测试版/生产版之前将其关闭。我想说,这是两个独立的设计决策,但感谢您分享您的观点。谢谢您,很明显,我只能将其归结为“看不见树木”的时刻<代码>'debug'=>在数组($服务器['REMOTE\u ADDR',数组('192.168.0.1','127.0.0.1'))中,中断命令,php cli没有远程地址,因此抛出了一个严重错误。谢谢,尝试了修复。@LSerni您的ternay操作符应该是:
数组密钥存在('REMOTE\u ADDR',$服务器)?在_array($_SERVER['REMOTE_ADDR'],[,,,,]):true
非常感谢您的回复,这是我采用的方法,因为我发现它在美学上比Isemi的(同样有效)解决方案更令人愉悦。我稍微调整了一下,从一个文件中获取了有效的IP,同样,我也不得不稍微重写
if
语句,因为我发现Laravel在点击
throw
语句时报告了一个错误。啊,是的,您可能必须反转该语句。重新引用异常将导致各种问题。
'debug' => (strpos($_SERVER['HTTP_USER_AGENT'], 'KLAATU-BARADA-NIKTO') > 0),