如何只向自己显示PHP错误?
我已经看到了一些使用php.ini隐藏php错误的方法,或者通过将如何只向自己显示PHP错误?,php,Php,我已经看到了一些使用php.ini隐藏php错误的方法,或者通过将php\u flag display\u errors off添加到.htaccess来隐藏php错误,但是我想知道是否有一种方法可以让我只看到php错误(显然对调试很有用),但其他任何人都会被重定向到某个样板错误页面。我在我的网站上有一些脚本,它们使用我的论坛来验证我的管理员身份,并将其他人踢出网站,所以也许可以使用相同的方法 如果这不可能,我想我会使用.htaccess方法,因为我没有访问php.ini的权限。向.htacce
php\u flag display\u errors off
添加到.htaccess来隐藏php错误,但是我想知道是否有一种方法可以让我只看到php错误(显然对调试很有用),但其他任何人都会被重定向到某个样板错误页面。我在我的网站上有一些脚本,它们使用我的论坛来验证我的管理员身份,并将其他人踢出网站,所以也许可以使用相同的方法
如果这不可能,我想我会使用.htaccess方法,因为我没有访问php.ini的权限。向.htaccess添加php\u标志display\u errors off
谢谢 您可以对照用户IP进行检查,如果它与您的IP匹配,您可以显示错误。 大概是这样的:
if($_SERVER['REMOTE_ADDR'] == 'your.ip.address'){
error_reporting(E_ALL);
} else {
error_reporting(0);
}
if($_SESSION['isadmin']==1){
ini_set('display_errors', 1);
ini_set('log_errors', 1);
}
如果你不知道你的外部IP,只需谷歌“什么是我的IP”或类似的
基本案例场景显然有一个开发服务器。虽然我同意konforce的观点,但通过使用error_reporting()函数在运行时设置错误报告,这是可能的。如果您坚持这样做,请将其放在您提到的确定您是管理员的代码块中,这样您就不会在不同的地方做出决定。如果您有用户系统,请设置代码,以便在您登录时识别您,并显示错误。因此,只有当您登录时,它才会显示错误。虽然在屏幕上显示错误对开发很有好处(正如您马上看到的那样),但不应为生产服务器启用这些错误,因为您可能会意外地将敏感信息(如数据库密码)暴露给未经授权的用户 有用的INI选项包括:
ini_set('error_reporting', E_ALL & ~E_NOTICE);
ini_set('error_log', '/path/to/my/php.log');
ini_set('log_errors', 'On'); // log to file (yes)
ini_set('display_errors', 'Off'); // log to screen (no)
这样,所有错误都将记录到指定的文件中。屏幕上不会显示任何错误
确保web服务器用户能够写入该文件。在运行脚本之前,您可能需要创建它并相应地chmod
/chown
它
在私有开发服务器上,您可以禁用日志文件并直接显示到屏幕。在开发时,我也会养成显示E_NOTICE
错误的习惯。(只需使用E_ALL
作为值。)如果您的脚本编写得很好,那么您也可以在生产过程中继续记录它们。E_通知
有助于捕捉变量名或数组索引中的键入错误
请注意,所有这些选项也可以在php.ini
或.htaccess
文件中设置。但是如果使用.htaccess
则不能使用E.*
常量;相反,必须对整数表示形式进行硬编码。(即,在.htaccess
文件中,您使用
显示的任何结果作为值,或者使用希望记录的任何内容。)
事实上,如果可能的话,我建议在php.ini
中设置它们。否则,如果出现脚本解析错误(或者由于某种原因跳过了ini\u集
),则可能无法正确记录错误,等等
在Linux机器上,您始终可以从shell执行
tail-f/path/to/my/php.log
,以实时监控日志。由于您的代码已经知道您是管理员,您可以使用如下逻辑:
if($_SERVER['REMOTE_ADDR'] == 'your.ip.address'){
error_reporting(E_ALL);
} else {
error_reporting(0);
}
if($_SESSION['isadmin']==1){
ini_set('display_errors', 1);
ini_set('log_errors', 1);
}
管理员会看到错误,但其他用户不会看到错误。我建议改为使用日志文件。在实时服务器上启用调试是危险的,因为它可能会暴露敏感数据。我知道您希望将其限制为授权用户。。。但我还是不会冒险犯错误。另外,如果您登录到文件,您可以捕获每个人的错误。+1,同意konforce。如果向用户显示错误的错误,可能会出现太多错误。日志文件依赖于单独的身份验证系统(OS)来确保您是唯一能够看到它的人,这正是您想要的,因为如果损坏的是您的身份验证代码怎么办?@konforce-感谢您的回复。您是否有一个链接或说明如何登录到文件的东西?我是一个新手,不知道怎么做:)我提供了一个答案,其中包括记录到一个文件。它应该涵盖足够的基础知识,让你开始。