PHP将文件上传到webserver根目录之外的目录

时间:2011-06-12 22:24:05

标签: php apache

所以我对你们有一个问题......我正在尝试用PHP编写一个网站,允许人们将图像上传到我的服务器。我有上传部分工作,所以这不是问题。问题是当我尝试将上传的文件写入apache文档根目录之外的目录时。

Apache的文档根目录是/ var / www /,我试图将这些图像保存到的目录是/ mnt / storage / images /。我创建了目录,将组更改为www-data,并将目录上的权限更改为777(尽管我知道安全性很可怕)。我用apache配置文件/etc/apache2/apache2.conf尝试了一些东西,即添加一个标签和一个Alias行,但似乎没什么用。每次我尝试将文件上传到ima​​ges目录时,都会给我一个权限错误。我甚至尝试手动放置一些文件并使用别名导航到目录,使用Web浏览器,我收到403错误。

我知道我要么做错了,要么我没有做任何事情来做这项工作。我已经用Google搜索了几天这方面的帮助,我发现的只是无用的信息,或者几乎没有任何帮助的信息。

顺便说一下......我使用Apache 2.2.17在Ubuntu 11.04上,我有root访问权和所有爵士乐。

谢谢, 罗比

编辑:这是我放入的apache配置的一部分:

Alias /images "/mnt/storage/images/"
<Directory "/mnt/storage/images/">
    Allow from all
</Directory>

3 个答案:

答案 0 :(得分:3)

您必须在所涉及的所有目录上授予Apache访问权限:

/mnt
/mnt/storage
/mnt/storage/images

如果Apache对imagesstorage目录没有权限,那么在mnt上执行777是没有意义的。

当然,只有images需要具有写权限,因为这是您实际执行文件操作的地方。 mntstorage最多只需要读取权限,您可以通过将Apache的用户帐户放入一个组并将images目录chgrp到该新组来远离执行全局(xx7)权限。

答案 1 :(得分:0)

您可能在PHP中启用了safe_mode。把它关掉。

答案 2 :(得分:0)

可能是open_basedir。您可以为特定域打开和关闭此... 尝试一下

的内容
<Directory /var/www/vhosts/domain.com/httpdocs>
        php_admin_flag engine on
        php_admin_value open_basedir none
</Directory>

(信息在这里)[http://forum.parallels.com/showthread.php?t=62750%22]如果你正在使用Plesk。或者你应该希望能够将它与你正在使用的东西相符合