【发布时间】:2014-09-13 03:19:42
【问题描述】:
我正在开发一个用户可以使用表单上传图像/视频的页面。代码包括这一行:
move_uploaded_file($tempfile, $newfile)
然后从这个图像/视频自动创建一个缩略图并上传到服务器,如下所示:
file_put_contents($thumbname, $thumbnail)
现在图片的上传工作完美,但缩略图无法保存,我收到了以下回复:
警告:file_put_contents(thumbnails/1.jpg):未能 打开流:权限被拒绝 第 17 行的 SITEURL/upload.php
我的两个问题:
为什么用户有权通过
move_uplaoded_file上传图片,但通过file_put_contents上传缩略图却被拒绝?请注意,图像和缩略图这两个文件都会上传到同一个文件夹。用户不应该有两者都做的权限还是两者都不做?我确实意识到已经有一个这样的线程,但建议的答案是运行
chmod 777。但我读到将文件夹设置为 777总是存在安全风险。没有 777 有没有办法解决这个问题?
同样,我不明白为什么我必须将file_put_contents的权限更改为 777,而move_uploaded_file在 755 上工作得很好。
【问题讨论】:
-
chmod -R u+rwx,g-rw,o-x thumbnails/为所有者提供读、写和执行权限,但拒绝组和其他人的执行权限。chmod足够强大到manage rights more carefully。比 777 更仔细,这是肯定的 -
@EliasVanOotegem 这不是
chmod -R 766的简写吗? -
@NiettheDarkAbsol:是的,但我发现
u+rwx和g-wx符号更清晰:_U_ser, _G_roup, _O_ther, _A_ll,+for grant,-for否认和_R_ead,_W_rite,e_X_ecute...(当然,你知道这一点,但这个解释是针对OP的;-P) -
@NiettheDarkAbsol:对于每个人来说,只要我们都同意最好避免
chmod -R 777,这一切都很好 -
@EliasVanOotegem 同意。
chmod -R 777与eval一样“解决问题”...
标签: php file-permissions user-permissions