PHP 可以在 __destruct() 期间保存到文件吗

Can PHP save to a file during __destruct()

我想在我的 类.

之一中使用 __destruct() 函数将一些信息保存到我服务器上的文件中

但是,每次我尝试在 __destruct() 中使用 file_put_contents(...) 时,我都会收到此错误:

Warning: file_put_contents(HTMLcache.txt): failed to open stream: Permission denied in /Applications/MAMP/htdocs/time/HJ_Tag.php on line 141

file_put_contents(...) 在我的代码的其他部分工作得很好,它在完全相同的文件上被调用。 __destruct() 期间出现此错误的原因可能是什么?我该如何解决?

我认为你的意思是 __destruct() 而不是 __destroy(),所以我编辑了你的 post。

Can PHP save to a file during __destruct()

是的,可以。 但是,当您像这样使用带有 file_put_contents() 的相对文件名时:

file_put_contents('hello.txt', 'hello world');

该文件实际上可能是在您意想不到的地方创建的,您可能在那里没有写权限, 这解释了错误消息。

就我而言,它是在 C:\Users\Rei\AppData\Local\VirtualStore 中创建的。 这很奇怪,因为我从未指定该目录。 我不得不搜索我的整个硬盘驱动器才能找到它。

为防止出现这种情况,请始终使用绝对文件名。 例如,在文件名前添加__DIR__

file_put_contents(__DIR__ . 'hello.txt', 'hello world');

并确保您有写入权限。