【问题标题】:PHP/Apache: Permission settings for uploaded JPEG image files not correctPHP/Apache:上传的 JPEG 图像文件的权限设置不正确
【发布时间】:2011-02-20 04:20:01
【问题描述】:

我刚刚设置了一个 LAMP 开发服务器,但仍在解决一些问题。服务器安装在一台计算机上,我使用 Windows 笔记本电脑编写代码并通过 Web 浏览器测试网站。

我的文件上传脚本的工作原理是 JPEG 图像文件已成功上传到服务器,但是当我尝试在 Web 浏览器中查看图像时,权限被拒绝。

我通过服务器检查文件的权限,它们是600。我可以通过chmod 777 theimage.jpg 解决这个问题,但这似乎根本不是一个好的解决方案。

解决方案是否与 Apache 配置有关?或者还有什么我应该做的。

谢谢你, 迈克

更新

澄清一下,我可以将 JPEG 文件上传到 /var/www/test/images,但上传后无法在网络浏览器中查看图像。我的脚本在生产服务器上工作(我使用的是 Dreamhost)。这让我相信问题出在我刚刚设置的开发服务器上。非常感谢任何反馈,即使只是为了更好地理解服务器设置而应该阅读的资源。

【问题讨论】:

    标签: php apache permissions


    【解决方案1】:

    我会说您可能在与 Apache 不同的 uid 下运行 PHP。 你可以:

    • 配置 apache/PHP 以便它们在相同的 uid 下运行
    • 文件上传时,使用PHP通过chmod函数更改权限或更改与PHP进程关联的umask,以便文件首先获得正确的权限
    • 通过 PHP (readfile) 访问图像 -- 不推荐用于性能问题

    【讨论】:

    • 感谢您的回复。我正在阅读您关于 Apache 和 PHP 在同一 uid 下运行的建议。
    【解决方案2】:

    您需要更改包含文件的文件夹的权限,而不仅仅是文件本身。在包含您要访问的文件的目录上使用sudo chmodsudo chown,然后检查以确保使用ls -rl 命令更改了权限。与 chmod 一起使用的权限应该是 rw,如果权限已正确更改,则在使用 ls -rl 命令时,目录应为 -rw-r--r--。此外,如果您仍不清楚 chmod 和 chown 如何工作的细节,请查看this linkthis link

    编辑:

    输入这个:

    sudo chmod -R 666 /var/www/test/images

    或者这个:

    sudo chmod a=rw /var/www/test/images

    ... 做你想做的事。有关更多说明,请参阅下面我的最新评论条目。

    【讨论】:

    • @typoknig 我使用了sudo chmod -R -rw-r--r-- /var/www/test/imagessudo chown -R myusername /var/www/test/images,但是这样做之后上传的文件的权限是-rw-------。我将尝试@Artefacto 的建议,然后返回您的建议。谢谢。
    • 我想你可能误解了我的意思。当您使用ls -rl 查看权限时,它应该是-rw-r--r--,当您使用chmod 命令时,它应该看起来像这样sudo chmod -R 666 /var/www/test/images,这将导致权限-rw-rw-r--。您也可以使用其他选项。如果您希望每个人都有权读取和写入文件,您可以使用我刚才提到的 666 命令,或者您可以使用以下命令:sudo chmod a=rw /var/www/test/images。有很多选择:) 这是另一个可能有帮助的链接:zzee.com/solutions/chmod-syntax.shtml
    • @typoknig 感谢您的澄清。我已经尝试了你的建议,但仍然无法查看已上传到目录的图像文件。
    • 也许这会有所帮助。我目前使用的是sudo chmod -R 777 /var/www/test/images。然后我通过我的 PHP 脚本上传了一张图片。图片上传成功。我无法通过网络浏览器访问图像来查看图像。在/var/www/test/images/theimage.jpg 上运行ls -rl 将权限显示为-rw-------。这有帮助吗?
    • -rw------- 告诉您,您的 linux 机器的所有者已设置为读写权限。有关您可以使用的两个命令,请参阅我编辑的答案。其中之一与您已经尝试过的完全相同,只是它使用666 而不是777。另外,以防万一您不知道,您的权限按owner 然后group 然后everyone else 的顺序列出,所以-rw-rw-r-- 意味着您的所有者可以读写,组可以读写,其他人都可以阅读。
    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 2015-11-14
    • 2010-09-05
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多