为什么我不能在 PHP 中使用 chmod() 上传文件


Why I can not upload files using chmod() in PHP?

我想在远程主机上上传图像(本地一切正常(。

像我以前的其他项目一样使用了下面的代码来做到这一点:

if (move_uploaded_file($_FILES["scan"]["tmp_name"], 'images/scans/1.jpg')) {
   chmod ('images/scans/1.jpg','0644');
}

但是每次我在互联网上运行这段代码时,我都会收到一个错误:

警告:move_uploaded_file(images/profile/Mordent.jpg( [function.move-uploaded-file]: 无法打开流:权限被拒绝...

我必须scans目录权限更改为 0777,然后我可以上传图像。否则我不能。这对我来说很奇怪。我已经在不同的项目中多次使用过这段代码,我没有任何问题。

images/scans/必须由Web服务器用户写入,并且不需要0777,这是全局可写的。 首先,images必须可由 Web 服务器用户读取,并在最后一个位置(如 0755 (具有5scans目录必须由 Web 服务器用户拥有或可由其写入。 最好将其归Web服务器用户所有,其中其权限也可以0755

根据

php.net:

注意:此功能不适用于远程文件,因为 要检查的文件必须可通过服务器的文件系统访问。