PHP 创建具有错误权限的文件

PHP 创建具有错误权限的文件

我有一个 php 文件,名称image_creat.php

$res = mysql_query("select * from images where key!='en' Order By id DESC LIMIT 0,10");
while ($rows = mysql_fetch_array($result)) 
{
$imageurl =  dirname(__FILE__) . '/../images/';
$width = $row['width'];
$height = $row['height'];
$source_image = @imagecreatefromjpeg($row['image']);
$desired_width = '800';
$desired_height = floor($height*($desired_width/$width));
$virtual_image = @imagecreatetruecolor($desired_width,$desired_height);
@imagecopyresized($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height);
@imagejpeg($virtual_image,$imageurl,'100');
}

我使用 SSH 来设置它的权限:

chmod 0755 /var/www/html/php/image_creat.php
chown root:root /var/www/html/php/image_creat.php

然后还设置图像文件夹的权限:

chmod 0755 /var/www/html/php/images/

但是php脚本创建jpeg文件后,我发现所有文件都有权限644,所以我的浏览器拒绝访问它。问题出在哪里?谢谢。

答案1

我找到所有权限为644的文件,所以我的浏览器拒绝访问它

那么,要么是你没有告诉我们整个故事,要么是你的事实被错误报道了。

644 表示 -rw-r--r--,并且由于创建脚本仅对 root 可执行,因此输出文件将归 root 所有。所有用户(包括 Web 服务器 uid)都可以读取该文件。

我建议你去阅读有关 Unix 文件权限的资料。

有很多原因可能导致文件无法被 Web 服务器的 uid 读取 - 最主要的原因可能是目录权限(但如果全部上面的目录是 0755 - drwxr-xr-x - 那么这不是原因)和 ACL。

顺便说一句,使用 root 帐户进行日常数据维护是一个非常糟糕的主意。

相关内容