我真的不明白为什么我们应该在PHP数据对象PDO连接文件的顶部设置:
error_reporting(E_ALL);//When we are in a development process;
或
error_reporting(0);//To shut off all errors when web app is live
同时,当我们创建连接参数时,我们应该添加:
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
我的问题是有什么区别,为什么我们在同一个文件中同时使用error_reporting
和ERRMODE_EXCEPTION
?他们每个人的角色是什么?他们有什么不同吗?
首先,初始语句是错误的。
error_reporting(E_ALL);
在所有环境中都应该始终相同。
关于两者之间的区别,error_reporting()
是PHP范围内的相关设置,负责所有PHP错误,并且
setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
仅用于PDO。
因此,您可以告诉为什么必须同时使用这两种方法:error_reporting(E_ALL)将使您意识到所有PHP错误,如缺少变量或文件系统权限问题。而PDO的setAttribute只是告诉PDO报告自己的错误,并通过error_reporting(E_ALL)使其可用。
正确的设置是:
error_reporting(E_ALL);
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
- 在所有环境中
然后
ini_set('display_errors', 1);
当我们处于发展过程中;
ini_set('display_errors', 0);
ini_set('log_errors', 1);
关闭在web应用程序运行时显示所有错误,同时记录这些错误以供开发人员参考。