PHP 将文件上传到网络服务器根目录之外的目录

标签 php apache

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

Apache 的文档根目录是/var/www/,而我试图将这些图像保存到的目录是/mnt/storage/images/。我已经创建了目录,将组更改为 www-data,并将目录的权限更改为 777(尽管我知道这在安全方面很糟糕)。我对 apache 配置文件/etc/apache2/apache2.conf 进行了一些尝试,即添加标记和别名行,但似乎没有任何效果。每次我尝试将文件上传到图像目录时,都会出现权限错误。我什至尝试过手动将一些文件放在那里并导航到目录,使用别名,使用网络浏览器,我收到 403 错误。

我知道我要么做错了什么,要么我没有做任何事情来完成这项工作。我已经用谷歌搜索了几天来寻求帮助,但我发现的都是无用的信息,或者是一点帮助都没有的零碎信息。

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

谢谢, 罗比

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

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

最佳答案

您必须授予 Apache 对所有相关目录的访问权限:

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

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

当然,只有images 需要有写入权限,因为这是您实际进行文件操作的地方。 mntstorage 最多需要读取权限,您可以通过将 Apache 的用户帐户放入一个组并将图像目录更改为那个新组。

关于PHP 将文件上传到网络服务器根目录之外的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325107/

相关文章:

PHP交替颜色

PHP/JavaScript。浏览器 "loads"永远,即使在所有资源下载完成后,加上 Opera/Chrome 问题

linux - 从 "yum install httpd"和 "source"安装 apache 有什么区别?

javascript - 如何在主页上的 "featured"(推荐)模块中连续显示 5 个产品,而不是 4 个?

php - PHP 中的日期代码显示 01/01/1970

regex - htaccess 使用字符串参数的部分值重定向 URL

python - 在 Windows 7 上运行的 WAMP 服务器上安装 mod_wsgi

php - 为什么等待运行时的进程数很高,但我的 CPU 却有 99% 空闲?

php - 如何使用 localhost 或其他外部 IP

javascript - Heatmaps.js 未捕获的 ReferenceError