出于安全原因,已禁用error_reporting()

时间:2013-01-16 11:12:28

标签: codeigniter hosting php

我在codeigniter框架中创建了一个项目并将其上传到主机,主机表示该网站正在快速填充服务器的日志文件。

所以我检查了错误日志以及我得到的每个请求:

error_reporting() has been disabled for security reasons /index.php on line 36
set_error_handler() has been disabled for security reasons /system/core/CodeIgniter.php on line 72

我问主机是否可以打开这些选项,因为codeigniter需要它们进行错误处理,但他们回复说我必须编辑我的代码才能在他们的服务器上禁用这些功能。

我不想编辑codeigniter的核心文件,我真的不明白为什么它被禁用了。你们中的任何人都知道一个简单的解决方案来解决这个错误,或者一些论据告诉主持人为我改变这个设置吗?

1 个答案:

答案 0 :(得分:0)

Web主机可以禁用error_reporting功能的原因是为了防止错误的PHP程序向最终用户输出崩溃消息,黑客可以使用该消息来确定如何访问服务器。 PHP崩溃消息包含许多可能对黑客有用的细节,包括目录路径和有关正在使用的框架软件的信息。

通常认为禁用生产站点的错误报告是一种好习惯,因此这些消息不会显示给最终用户。将其打开以进行开发,然后关闭以进行生产。

这解释了您的主机禁用它的原因。

至于如何防止“禁用错误报告”消息进入日志:不幸的是,除非您编辑代码以删除对error_reporting的引用,否则您不能这样做。

CodeIgniter手册包含此页面:http://ellislab.com/codeigniter/user-guide/general/errors.html

在此页面上,它指出error_reporting代码位于index.php,他们建议您对其进行编辑,以便在代码投入生产后停止报告错误。

换句话说,CodeIgniter说:“请改变这个”。所以不要担心不想更改核心文件(index.php无论如何都不是真正的核心文件。)

相关问题