无法保存除777以外的其他权限的文件

时间:2013-04-04 14:31:03

标签: php apache permissions 777

我有一个脚本可以调整图像大小,然后保存新图像 如果原始图像没有777权限,则无法保存新图像。

我知道777存在风险,因此在使用775或755等不同权限时,它什么都不做。

  1. 为什么什么都不做?
  2. 如何解决?
  3. 修改
    我希望能够使用我的脚本保存文件,无论图像的许可是什么。

5 个答案:

答案 0 :(得分:8)

这一切都是因为您的服务器配置不当,这意味着httpd作为不同的用户运行而不是拥有所有文件,这需要为write设置others权限。解决方案是修复服务器配置,以便这些用户ID匹配。但如果您不熟悉服务器管理,这并非易事。其他(但这不是一个真正的解决方案)是将这两个用户放在一个组中,这样就可以将其“限制”到您的组中而不是给每个人写入权限。但这不是一种方法。或者,如果您是服务器上的唯一用户,则可以将httpd设置为在您的userid / groupid上运行而不是自己的。但是,再次,这不应被视为“解决方案”。

答案 1 :(得分:2)

您可以在Apache配置文件中重新设置UserGroup参数,以另一个用户身份运行它。

答案 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(),您可以获得所创建文件的当前权限。