我正在使用一个页面,用户可以使用表单上传图像/视频 . 代码包括以下行:
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?
同样,我不明白为什么我必须将权限更改为777 forfile_put_contents
而move_uploaded_file
在755时工作正常 .
1 回答
使用:
找出用户运行PHP的用户 .
然后检查您的服务器谁拥有
thumbnails
这应该显示这样一行(取自我自己的服务器):
在上面的示例中,该文件夹由用户
niet
拥有,并且位于niet
组中 . 如果它与ealier的whoami
不同,则需要更改文件夹的所有者 . 例如,如果whoami
给了user3041398
,你会这样做:再次运行
ls
行,您现在应该在输出中看到您的用户名,PHP应该能够写入该文件夹 .