我有一个调整图像大小然后保存新图像的脚本。
如果原始图像没有777权限,我无法保存新图像。
我知道 777 是有风险的,所以当使用不同的权限(例如 775 或 755)时,它什么也不做。
- 为什么它什么都不做?
- 如何解决?
编辑:
无论图像的权限是什么,我都希望能够使用我的脚本保存文件。
我有一个调整图像大小然后保存新图像的脚本。
如果原始图像没有777权限,我无法保存新图像。
我知道 777 是有风险的,所以当使用不同的权限(例如 775 或 755)时,它什么也不做。
编辑:
无论图像的权限是什么,我都希望能够使用我的脚本保存文件。
这一切都是因为您的服务器配置错误,这意味着 httpd 以不同于拥有所有文件的用户身份运行,这需要write
为others
. 解决方案是修复服务器配置,使这些用户 ID 匹配。但是,如果您不熟悉服务器管理,这并非易事。其他(但这不是真正的解决方案)是将这两个用户放在一个组中,这样您就不会给每个人写访问权限,而是将其“限制”到您的组。但这不是一条可行的路。或者,如果您是服务器上的唯一用户,您可以将 httpd 设置为在您的 userid/groupid 上运行,而不是在它自己的上运行。但是,同样,这不应被视为“解决方案”。
您可以重新设置 Apache 配置文件中的User
和Group
参数以作为另一个用户运行它。
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>
您的 Web 服务器在与拥有图像的用户不同的用户下运行。要找出您的网络服务器在哪个用户下运行,请创建并运行这个 php 脚本
<?php
echo shell_exec('whoami');
?>
之后您可以尝试 chmod,但这很大程度上取决于 php 守护程序拥有的权限;
chmod("/somedir/somefile", 755);
fileperms()
您可以获取已创建文件的当前权限。