2

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

我知道 777 是有风险的,所以当使用不同的权限(例如 775 或 755)时,它什么也不做。

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

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

4

5 回答 5

8

这一切都是因为您的服务器配置错误,这意味着 httpd 以不同于拥有所有文件的用户身份运行,这需要writeothers. 解决方案是修复服务器配置,使这些用户 ID 匹配。但是,如果您不熟悉服务器管理,这并非易事。其他(但这不是真正的解决方案)是将这两个用户放在一个组中,这样您就不会给每个人写访问权限,而是将其“限制”到您的组。但这不是一条可行的路。或者,如果您是服务器上的唯一用户,您可以将 httpd 设置为在您的 userid/groupid 上运行,而不是在它自己的上运行。但是,同样,这不应被视为“解决方案”。

于 2013-04-04T14:32:22.623 回答
2

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

于 2013-04-04T14:36:42.707 回答
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>
于 2013-04-04T14:33:56.910 回答
1

您的 Web 服务器在与拥有图像的用户不同的用户下运行。要找出您的网络服务器在哪个用户下运行,请创建并运行这个 php 脚本

<?php
echo shell_exec('whoami');
?>
于 2013-04-04T14:45:51.060 回答
0

之后您可以尝试 chmod,但这很大程度上取决于 php 守护程序拥有的权限;

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

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

于 2013-04-04T14:35:26.107 回答