当你在为你的应用程序创建配置文件时,最好的选择时参照以下的做法:
注意: 自 PHP 5.4.0 开始,register_globals
选项已经被移除并不再使用。这是在提醒你如果你正在升级旧的应用程序的话,你需要注意这一点。
当 register_globals
选项被开启时,它会使许多类型的变量(包括 $_POST
, $_GET
和 $_REQUEST
)被注册为全局变量。这将很容易使你的程序无法有效地判断数据的来源并导致安全问题。
例如:$_GET['foo']
可以通过 $foo 被访问到,也就是可以对未声明的变量进行覆盖。 如果你使用低于 5.4.0 版本的 PHP 的话,请 确保 register_globals
是被设为 off 的。
错误日志对于发现程序中的错误是非常有帮助的,但是有些时候它也会将应用程序的结构暴露给外部。为了有效的保护你的应用程序不受到由此而引发的问题。你需要将在你的服务器上使用开发和生产(线上)两套不同的配置。
为了在 开发 环境中显示所有可能的错误,将你的 php.ini 进行如下配置:
display_errors = On display_startup_errors = On error_reporting = -1 log_errors = On
将值设为 -1 将会显示出所有的错误,甚至包括在未来的 PHP 版本中新增加的类型和参数。 和 PHP 5.4 起开始使用的 E_ALL 是相同的。- php.net
E_STRICT 类型的错误是在 5.3.0 中被引入的,并没有被包含在 E_ALL 中。然而从 5.4.0 开始,它被包含在了 E_ALL 中。这意味着什么?这表示如果你想要在 5.3 中显示所有的错误信息,你需要使用 -1 或者 E_ALL | E_STRICT。
为了在 生产 环境中隐藏错误显示,将你的 php.ini 进行如下配置:
display_errors = Off display_startup_errors = Off error_reporting = E_ALL log_errors = On
当在生产环境中使用这个配置时,错误信息依旧会被照常存储在 web 服务器的错误日志中,唯一不同的是将不再显示给用户。更多关于设置的信息,请参考 PHP 手册: