问题
一些回调函数是在脚本停止后执行的,此时一些网络服务器(例如Apache)会改变回调函数内脚本的工作目录,如果回调函数内有用到相对路径,则可能产生意料之外的结果
如:
register_shutdown_function() 注册的回调函数
ob_start() 函数的 output_callback 回调函数
类的析构函数 __destruct,在脚本停止后执行的情况下(如果没有显式销毁)
解决办法
使用 chdir() 重设当前工作目录:
chdir(dirname($_SERVER['SCRIPT_FILENAME']));