2013-04-04 22 views
2

我有一个调整大小的图像,然后保存新的图像的脚本。
我不能保存新的图像,如果原始图像没有777个权限。无法保存与其他许可文件,除了777

我知道,777是有风险的,因此使用不同的权限,如775或755什么都不做的时候。

  1. 为什么什么都不做?
  2. 如何解决?

编辑:
我希望能够用我的剧本,无论图像的权限是什么保存的文件/文件了。

+0

那么你想完成什么? – 2013-04-04 14:32:32

+0

编辑我的帖子。 – Ron 2013-04-04 14:33:48

回答

8

这一切都是因为您的服务器配置错误,这意味着httpd以不同的用户身份运行,而不是拥有所有文件,这需要write权限集others。解决方案是修复服务器配置,以便这些用户id匹配。但是,如果您不熟悉服务器管理,这不是微不足道的。其他(但这不是一个真正的解决方案)将把这两个用户放到一个组中,这样就不会给每个人写访问权限,只会将它“限制”到你的组中。但这不是一种可行的方式。或者,如果您是服务器上的唯一用户,则可以将httpd设置为在您的userid/groupid上运行,而不是在其自身上运行。但是,这又不应该被视为一种“解决方案”。

+0

如何更改该设置以及该设置的调用方式 – Ron 2013-04-04 14:34:28

+0

您无法在5秒内更改该选项。这是更复杂和更复杂的任务。你可以开始阅读关于suPHP或suEXEC – 2013-04-04 14:37:42

+0

我明白了。我应该保持777的权限?我甚至不知道它有什么风险......我只知道这是有风险的。 – Ron 2013-04-04 14:40:46

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> 
+0

这是真的,但777是有风险的,是吗?特别是对于文件夹 – Ron 2013-04-04 14:38:22

0

您可以尝试之后文件模式,但它强烈地依赖于PHP守护进程所拥有的权利内;

chmod("/somedir/somefile", 755); 

With fileperms()您可以获取创建的文件的当前权限。

+0

不能chmod文件夹。也被设置阻止... – Ron 2013-04-04 14:38:52

+0

听不清楚。我希望WebnetMobile的解决方案能为你解决:) – 2013-04-04 14:43:27

2

您可以在Apache配置文件中重新设置UserGroup参数,使其作为另一个用户运行。

1

您的Web服务器在拥有图像的用户以外的用户下运行。要找出哪个用户是你的网络服务器运行,创建并运行这个PHP脚本

<?php 
echo shell_exec('whoami'); 
?>