所以我对你们有一个问题......我正在尝试用PHP编写一个网站,允许人们将图像上传到我的服务器。我有上传部分工作,所以这不是问题。问题是当我尝试将上传的文件写入apache文档根目录之外的目录时。
Apache的文档根目录是/ var / www /,我试图将这些图像保存到的目录是/ mnt / storage / images /。我创建了目录,将组更改为www-data,并将目录上的权限更改为777(尽管我知道安全性很可怕)。我用apache配置文件/etc/apache2/apache2.conf尝试了一些东西,即添加一个标签和一个Alias行,但似乎没什么用。每次我尝试将文件上传到images目录时,都会给我一个权限错误。我甚至尝试手动放置一些文件并使用别名导航到目录,使用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>
答案 0 :(得分:3)
您必须在所涉及的所有目录上授予Apache访问权限:
/mnt
/mnt/storage
/mnt/storage/images
如果Apache对images
或storage
目录没有权限,那么在mnt
上执行777是没有意义的。
当然,只有images
需要具有写权限,因为这是您实际执行文件操作的地方。 mnt
和storage
最多只需要读取权限,您可以通过将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。或者你应该希望能够将它与你正在使用的东西相符合