所以我试图在我的初始化文件中基本上设置一些代码,允许在我的localhost /开发模式下显示错误,并且不允许在我的网络解决方案服务器/生产模式上显示错误。我已经删除了if else语句,因为我正在我的localhost服务器上测试它,所以我假设你也是。这是代码:
// Set INI to log errors
ini_set('log_errors', 1);
// Set Error Log Path Variable (Grabs the Root Directory of the Project, then appends on the path)
$errorPath = dirname(substr(dirname(__FILE__),strlen($_SERVER['DOCUMENT_ROOT']))) . '/logs/php/error.log';
// Set INI for error_log path
ini_set('error_log', $errorPath);
// Give some code thats going to throw an error
$db = new PDO("mysql:host=a;dbname=test", "root", "");
$errorPath
包含:
string(36) "/OOP Login System/logs/php/error.log"
这是正确的文件路径,“OOP登录系统”是“根”目录。 “OOP登录系统”文件夹当前位于我的Apache服务器中的htdocs文件夹中。
现在我的应用程序正在抛出一个“Uncaught PDOException”,这太棒了!我要那个。但它没有做的是将该错误保存到我的error.log文件中。只是好奇如何去做这件事。有什么理由不保存?我在php文件夹中创建了error.log文件,并尝试再次运行,但它仍无法正常工作。
使用PHP的ini非常新,所以任何帮助都会很棒。提前抱歉,如果你回复,我仍然不知道你在说什么。
答案 0 :(得分:0)
有点晚了,但是… 我猜问题出在这一行:
$errorPath = dirname(substr(dirname(__FILE__),strlen($_SERVER['DOCUMENT_ROOT']))) . '/logs/php/error.log';
产生此无效路径:
\/logs/php/error.log
您应该使用
$errorPath = basename(substr(dirname(__FILE__),strlen($_SERVER['DOCUMENT_ROOT']))) . '/logs/php/error.log';