我的脚本会创建一个图像并将其保存在服务器上。之后,它将其文件权限更改为644,以便其他用户可以读取图像:
imagejpeg($myImage, $savePath);
chmod($savePath, 0644);
对图像的引用将包含另一个允许我添加缓存头的脚本。本质上,第二个脚本添加了一些标题,然后将文件的内容写入输出流:
header("HTTP/1.1 200 OK");
//... caching headers
header("Content-Type: image/jpeg");
header("Content-Length: $Size");
readfile($ImageFile);
但是,这会导致权限失败:
Warning: readfile(...) [function.readfile]: failed to open stream: Permission denied in /.../showImage.php on line 20
第20行是包含readfile()
调用的行。
对fileperms($ImageFile)
的调用返回33412,即八进制中的101204。通过ftp我可以验证实际文件权限(对于ftp用户)是644。
图片的fileowner()
是具有4位用户名的用户,而脚本的get_current_user()
是我的ftp帐户。
我可以通过浏览器直接访问图像。只有脚本无法访问它。
如何为文件启用脚本访问?