PHP - copy、rename和move_uploaded_file之间的区别

15

我使用这些函数时有什么不同?为什么我应该使用其中一个而不是另一个...


“复制”和“重命名”之间的区别为什么不是显而易见的呢? - brettwhiteman
2个回答

45
  • copy() 函数用于复制文件,这样你就会有两个文件了。对于大文件,这可能需要很长时间。
  • rename() 函数用于更改文件名,这可能意味着将其移动到其他目录中。
  • move_uploaded_file() 函数与 rename() 函数基本相同,但只适用于通过 PHP 的上传机制上传的文件。这是一个安全特性,可以防止用户欺骗您的脚本以显示与安全相关的数据。

在未来,建议您自己查找此类信息,请参考PHP 手册


10
我在move_uploaded_file()的手册中找到了这个内容:

Florian S. 在 H. an der E. [.de] 于 2008年8月17日09:02发表评论

在我的设置中,move_uploaded_file总是创建文件0600(rw- --- ---),并由运行Web服务器的用户(所有者和组)拥有。 尽管目录具有设置为组权限的粘滞位! 我找不到任何设置来通过php.ini甚至使用umask()来改变这个问题。

我希望我的常规用户能够在服务器上执行tar cjf目录..但对于完全由web服务器进程用户拥有的文件将会失败; 而copy(from, to)函数却遵守了粘着位!

所以看起来copyrename做了 slightly different work.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接