gpt4 book ai didi

php - 将 copy() 与 tempnam() 创建的目标一起使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:52 27 4
gpt4 key购买 nike

在框架中调试问题时,我在使用 tempnam() 为复制的文件创建目标时遇到了一些奇怪的行为。

这是一个简化的测试用例:

touch ('/tmp/file.txt');
file_put_contents('/tmp/file.txt', 'test');
$dst = tempnam('/tmp', 'dst');
copy('/tmp/file.txt', $dst);
var_dump(filesize($dst));

显然,我希望 var_dump() 最后输出“4”,因为这是源文件的大小,但它总是返回零,这意味着目标文件为空,尽管 copy() 返回 true。我在 PHP 5.4.4 和 5.3.10 上进行了测试,结果相同。

我知道我可以更改我的代码以使用 fwrite() 或一些类似的构造,但我真正想知道的是,为什么它不能按照我编写的方式工作?

更新

这似乎实际上是一个 PHP 错误,在 filesize() 产生正确结果之前调用了 clearstatcache(),所以事实上无论哪种方式复制都是成功的,这是在说谎的 filesize()。参见 https://bugs.php.net/bug.php?id=65701https://github.com/php/php-src/pull/459

最佳答案

这似乎实际上是一个 PHP 错误,在 filesize() 产生正确结果之前调用了 clearstatcache(),所以实际上无论哪种方式复制都是成功的,是 filesize() 在撒谎。参见 https://bugs.php.net/bug.php?id=65701https://github.com/php/php-src/pull/459

关于php - 将 copy() 与 tempnam() 创建的目标一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18877556/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com