使用符号链接在PHP代码中使用新文件夹


Using symlink to use new folder in PHP code

在我的旧服务器上,我曾经使用/home/domain文件夹。

在这个新服务器中,我使用/var/www/vhosts/domain

在一个由许多php文件组成的非常古老的脚本中,它被用作/home/domain/public_html/...

我想知道是否有一种方法可以使用符号链接或类似的东西来使用这些php文件,而不需要用新的文件夹名称替换每一行

首先,我想说在所有文件中硬编码路径并不是一个好主意。如果需要完整路径,最好将文档根保存为常量,如果需要修改它,只需要在一个地方更改它。然后在脚本中设置相对于文档根目录的所有路径。

如果您不想这样做,您还有其他一些选择。不幸的是,符号链接可能不是其中之一,因为你可能会遇到目录限制,除非你的web服务器(例如Apache)被配置为也从被符号链接到的目录提供内容。

选项1:查找并替换

使用sed查找旧目录并用新目录替换所有出现的旧目录。参见:在目录和子目录中查找并替换为sed。只要确保你先备份所有文件,因为sed没有"撤销"功能,如果你做错了,你真的会把事情搞砸的。

选项2:使用与之前相同的目录

编辑站点的配置文件(例如,对于Apache在Debian上,这将是类似/etc/apache2/sites-enabled/example.com.conf的东西),并将DocumentRoot<Directory>更改为旧路径。如果它不存在,然后创建它,并复制你的文件。

选项3:绑定挂载(可能不推荐)

符号链接可能不起作用,但与符号链接类似的是绑定挂载。这基本上是将文件系统的一部分挂载到文件系统的另一部分。对于你想要做的事情来说,这有点过分了,但我在这里发布它主要是为了以防你想要愚弄你的服务器。

编辑服务器的/etc/fstab,并在末尾添加如下内容:

/var/www/vhosts/domain/ /home/domain  none rw,bind 0 0 

确保/home/domain实际上还不存在,然后以root身份执行mount -a,这应该会为您创建/home/domain,内容为/var/www/vhosts/domain/