PHP - 无法在shutdown函数中找到文件

时间:2014-01-14 10:53:20

标签: php error-handling shutdown

我正在尝试设置一些错误记录

register_shutdown_function('shutdown');

但是每当我尝试在关闭函数中包含一个文件时 - 它就找不到了,即使它存在并且在我的应用程序的其他地方包含就好了

function shutdown()
{
    require_once LIB_DIR.'phpmailer/class.phpmailer.php';
}

给我一​​个错误,说找不到文件..我在这里遗漏了什么,关闭文件中的文件的相对路径是否发生了变化?

3 个答案:

答案 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
}