我有一个脚本可以调整图像大小,然后保存新图像 如果原始图像没有777权限,则无法保存新图像。
我知道777存在风险,因此在使用775或755等不同权限时,它什么都不做。
修改
我希望能够使用我的脚本保存文件,无论图像的许可是什么。
答案 0 :(得分:8)
这一切都是因为您的服务器配置不当,这意味着httpd作为不同的用户运行而不是拥有所有文件,这需要为write
设置others
权限。解决方案是修复服务器配置,以便这些用户ID匹配。但如果您不熟悉服务器管理,这并非易事。其他(但这不是一个真正的解决方案)是将这两个用户放在一个组中,这样就可以将其“限制”到您的组中而不是给每个人写入权限。但这不是一种方法。或者,如果您是服务器上的唯一用户,则可以将httpd设置为在您的userid / groupid上运行而不是自己的。但是,再次,这不应被视为“解决方案”。
答案 1 :(得分:2)
您可以在Apache配置文件中重新设置User
和Group
参数,以另一个用户身份运行它。
答案 2 :(得分:1)
1)您创建一个具有777权限的新文件夹。
2)将图像保存在该文件夹中。
我认为你原始图像上不需要777。
为安全起见,您需要:
A)检查上传文件的扩展名并调用自定义调整大小/图像功能。这将确保文件始终转换为图像。
B)[ .htaccess ](在用户上传图片目录中)=
#Disable directory indexes & folder listing
[deny any file other than image]
<Files ^(*.jpeg|*.jpg|*.png|*.gif)>
order deny,allow
deny from all
</Files>
答案 3 :(得分:1)
您的网络服务器在与拥有图片的用户不同的用户下运行。要找出运行Web服务器的用户,请创建并运行此php脚本
<?php
echo shell_exec('whoami');
?>
答案 4 :(得分:0)
之后您可以尝试chmod,但它强烈依赖于php守护程序拥有的权限;
chmod("/somedir/somefile", 755);
使用fileperms()
,您可以获得所创建文件的当前权限。