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

时间:2015-10-22 00:18:52

标签: php linux symlink

在我以前的旧服务器中,我曾使用/home/domain文件夹。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

选项1:查找并替换

使用sed查找并替换旧目录中出现的所有旧目录。见:Find and replace with sed in directory and sub directories。只要确保你首先对所有文件进行备份,因为sed没有“撤消”,如果你做错了,你就可以搞砸了。

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

编辑您网站的配置文件(例如,对于Debian上的Apache,这类似于/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 /