2010-05-16 74 views
4

我刚刚安装了LAMP开发服务器,但仍然遇到了一些麻烦。服务器安装在一台计算机上,我使用Windows笔记本电脑编写代码并通过网络浏览器测试网站。PHP/Apache:上传的JPEG图像文件的权限设置不正确

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

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

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

感谢信, 迈克

更新

为了澄清,我能为JPEG文件上传到/var/www/test/images,但我无法在Web浏览器中查看图像就已经经过上传。我的脚本在生产服务器上工作(我正在使用Dreamhost)。这使我相信这个问题与我刚刚设置的开发服务器有关。任何反馈都是非常感谢,即使它只是我应该阅读的资源,以更好地了解服务器设置。

回答

1

您需要更改包含该文件夹的权限文件,而不仅仅是文件本身。在包含要访问的文件的目录上使用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

...做你想做的事情。有关更多解释,请参阅下面的最新评论条目。

+0

@typoknig我使用了'sudo chmod -R -rw -r -r--/var/www/test/images'和'sudo chown -R myusername/var/www/test/images',但是上传的文件的权限这样做后是'-rw -------'。我将尝试@Artefacto的建议,然后返回给您的建议。谢谢。 – 2010-05-16 23:08:41

+0

我想你可能误解了我。当你使用'ls -rl'查看权限时,它应该读取'-rw -r -r-',当你使用chmod命令时,它应该看起来像这样'sudo chmod -R 666/var/www/test /图像'这将导致权限'-rw-rw-r - '。您也可以使用其他选项。如果你希望每个人都有权限读写文件,你可以使用我刚才提到的666命令,或者你可以使用这个命令:'sudo chmod a = rw/var/www/test/images'。有很多选项:)这里是另一个可能有所帮助的链接: http://www.zzee.com/solutions/chmod-syntax.shtml – ubiquibacon 2010-05-17 01:00:06

+0

@typoknig谢谢澄清。我已经尝试了您的建议,但仍无法查看已上传到目录的图像文件。 – 2010-05-17 02:46:54

1

我想说你可能正在Apache下运行一个不同于uid的PHP。 您可以:

  • 配置Apache/PHP,让他们在相同的UID
  • 运行在文件上传,使用PHP tochange的权限与chmod功能或改变与PHP进程相关联的的umask从而使文件获取正确的权限在首位
  • 访问通过PHP图像(readfile) - 不建议性能问题
+0

感谢您的回复。我正在阅读关于您的建议,即Apache和PHP在相同的uid下运行。 – 2010-05-17 03:11:51