我正在处理用户可以使用表单上传图片/视频的页面。代码包括以下行:
move_uploaded_file($ tempfile,$ newfile)
然后从该图像/视频自动创建缩略图并上传到服务器,如下所示:
file_put_contents($ thumbname,$ thumbnail)
现在上传图片效果很好但缩略图无法保存,我得到了回复:
警告:file_put_contents(缩略图/ 1.jpg):失败了 开放流:权限被拒绝 第17行的SITEURL / upload.php
我的两个问题:
为什么用户有权通过move_uplaoded_file
上传图片,但是通过file_put_contents
上传缩略图会被拒绝?请注意,文件,图像和缩略图都会上传到同一文件夹。用户不应该同时允许同时执行这两项操作吗?
我确实已经知道有这样的线程,但建议的答案是运行chmod 777
。但我读到将文件夹设置为777 始终存在安全风险。有没有办法解决这个问题没有777?
同样,我不明白为什么我必须将file_put_contents
的权限更改为777,而move_uploaded_file
在755时工作正常。
答案 0 :(得分:2)
使用:
// PHP code:
echo `whoami`;
找出用户运行PHP的用户。
然后检查拥有thumbnails
# log in via SSH and run:
ls -l | grep thumbnails
这应该显示这样一行(取自我自己的服务器):
drwxr-xr-x 8 niet niet 4096 Jul 15 12:12 thumbnails
在上面的示例中,该文件夹归用户niet
所有,位于组niet
中。如果它与ealier中的whoami
不同,则需要更改该文件夹的所有者。例如,如果whoami
给了user3041398
,你会这样做:
chown user3041398 thumbnails
再次运行ls
行,您现在应该在输出中看到您的用户名,PHP应该能够写入该文件夹。