![是否可以将 Apache 写入重定向到另一个目录?](https://linux22.com/image/517876/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%B0%86%20Apache%20%E5%86%99%E5%85%A5%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
我正在使用 Centos 5.5
假设我有两个目录:
/var/www/读取
/var/www/写入
如果在 /var/www/read 中创建了一个文件,是否可以将其“重定向”以便它实际上是在 /var/www/write 中创建,而不是在 /var/www/read 中创建?
例如尝试创建 /var/www/read/directory/directory/newfile.txt 实际上最终会创建 /var/www/write/directory/directory/newfile.txt
为什么?
我希望任何 Apache 写入都位于不同于其读取的目录中。我无法直接在 php 代码中执行此操作,因为它已加密。
答案1
一般情况下不会。Apache 只会运行您的 php(或其他)代码。应用程序可以写入运行用户有写入权限的任何目录(如果您使用 mod_php,则此用户与运行 Web 服务器的用户相同)。
答案2
好吧,您可以让 cron 作业定期将新文件从读取目录移动到写入目录。
或者,您可以为 apache 构建一个 chroot 环境,除了将写入目录挂载到读取目录之外,其他一切都相同。您现在可以将写入目录绑定挂载到读取目录,但如果您必须更改许多设置,请直接转到完全 chroot,而不是稍后再进行。
更新:在 apache 上使用 chroot 只有 apache 可见,而执行绑定挂载时只有写入覆盖读取才对整个系统可见。
答案3
听起来你想要/var/www/read
只读。该技术类似于用于 Linux LiveCD 的技术。使用 unionfs 或奥夫斯在文件系统级别转移写入。CentOS 的兄弟版本 Scientific Linux 附带一个kernel-module-aufs
软件包。