【问题标题】:Image file permission - image resizer图像文件权限 - 图像缩放器
【发布时间】:2010-12-23 21:19:38
【问题描述】:

PHP 我的SQL

嗨,我遇到了一个有趣的问题。 我的 cms 中有一个表单,允许管理员将图像上传到服务器。该脚本将图像大小调整为缩略图(170 像素高度)和大图像(600 像素高度)。缩略图大小约为 16000k,大图像大小约为 160,000k。 我没有设置文件权限,只是让它自动发生。 当我访问该站点时,我可以看到缩略图,但看不到完整尺寸的图像,并且我已将问题追溯到文件权限。缩略图具有 rw-r-r 权限,较大的图像具有 rw-- -- -- 权限。即公众无权查看大图。我使用原始名称保存大图像,并在末尾附加 _thumbnail 保存缩略图。 为什么大图片的权限会在同一个脚本上传和调整大小时以及我没有设置文件权限时不同?大小和它有关系吗?我只有在将图像上传到生产服务器时才会遇到这个问题,而不是在我的本地机器上工作时。 谢谢 安德鲁

【问题讨论】:

  • 拇指16M,全尺寸图像160M?!你在拍外星系的照片吗?
  • 好吧,我只是使用 gd 来调整普通 jpeg 图像的大小。你建议我如何让它们变小?

标签: php mysql file-permissions


【解决方案1】:

您如何调整图像大小?您在使用外部程序吗?

这只是一个猜测,但这里是

  1. 管理员通过您的表单上传 image.jpg
  2. php 脚本将上传的 image.jpg 写入文件系统为 rw- --- --- (600)
  3. php脚本调用图片缩放程序来创建image_thumbnail.jpg
  4. 图像调整器将 image_thumbnail.jpg 写入 rw- r-- r-- (644)
  5. php脚本调用image resizer程序来创建resized image.jpg
  6. 图像调整器会覆盖 image.jpg,但将权限保留为 rw- --- --- (600)

为了验证这个理论,将image.jpg调整为600px的部分注释掉,然后检查原始上传图片的权限。如果他们是 600,那就是你的问题。

无论如何,一个简单的chmod 将解决您的问题。

【讨论】:

  • 我正在使用我自己的图像调整器,它只是获取图像并将其调整为缩略图大小和更大的大小,然后将它们保存到服务器上的文件中。为每个文件将文件保存到服务器时,您会设置文件权限吗?
  • 是的,我会写文件,关闭它,然后 chmod 它是我想要的
【解决方案2】:

我建议你先看看你的 php.ini 文件

;Maximum allowed size for uploaded files.
upload_max_filesize = 10M
;Maximum size of POST data that PHP will accept.
post_max_size = 10M

默认设置为 2M。你需要像我在这里提到的那样改变它。如果它仍然无法正常工作,请返回。

【讨论】:

  • 我无法访问 php.ini,但我可以在脚本执行期间设置这些值,对吗?使用 ini_set?
  • ini_get('post_max_size') 和 ini_get('upload_max_filesize') 应该允许您查看值。
  • 我认为无法使用 ini_set 更改 upload_max_filesize。当前值为 post_max_size 为 8M 上传最大文件大小为:2M。此外,它仍在上传文件,只是权限正在更改为更大的图像。我可能会按照 karoberts 的建议和 chmod 文件进行操作,并看到它有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多