我正在尝试设置一些错误记录
register_shutdown_function('shutdown');
但是每当我尝试在关闭函数中包含一个文件时 - 它就找不到了,即使它存在并且在我的应用程序的其他地方包含就好了
function shutdown()
{
require_once LIB_DIR.'phpmailer/class.phpmailer.php';
}
给我一个错误,说找不到文件..我在这里遗漏了什么,关闭文件中的文件的相对路径是否发生了变化?
答案 0 :(得分:3)
Notes
部分中的PHP doucmentation:
脚本的工作目录可以在某些Web服务器下的关闭功能内部进行更改,例如:的Apache。
我不确定,但也许是因为无法找到该文件。
在关闭函数中使用ABSOLUTE路径来代替相对文件。因为当脚本处理完成时,当前工作目录会发生变化。
答案 1 :(得分:2)
您的一条评论建议您使用相对路径:
../web-app/app/libraries/phpmailer/class.phpmailer.php
^^
这在PHP世界中通常不可靠,但在this particular case:
脚本的工作目录可以在某些Web服务器下的关闭功能内部进行更改,例如:的Apache。
如果错误消息未显示完整路径,您至少可以自print current directory进行调试:
var_dump(getcwd());
答案 2 :(得分:2)
我在这个帖子Write to file with register_shutdown_function
中找到了解决方案我需要在调用函数之前设置一个工作目录常量,然后切换回shutdown函数内的那个目录。
define('WORKING_DIRECTORY', getcwd());
function shutdown()
{
chdir(WORKING_DIRECTORY);
//files can now be included relative to the application
}