php - 使用符号链接(symbolic link)在 PHP 代码中使用新文件夹

标签 php linux symlink

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

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

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

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

最佳答案

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

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

选项 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:绑定(bind)挂载(可能不推荐)

符号链接(symbolic link)可能不起作用,但类似于符号链接(symbolic link)的东西是绑定(bind)安装。这基本上是将文件系统的一部分安装到它的另一部分。关于这件事的一些事情只是尖叫着你正在尝试做的事情有点矫枉过正,但我​​把它张贴在这里主要是为了让你感兴趣,以防你想玩弄你的服务器。

编辑服务器的 /etc/fstab并在末尾添加类似这样的内容:

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

确保/home/domain实际上还不存在然后执行mount -a作为 root,应该创建 /home/domain为您提供/var/www/vhosts/domain/的内容。

关于php - 使用符号链接(symbolic link)在 PHP 代码中使用新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33271415/

相关文章:

linux - 未找到软链接(soft link),即使它明显存在

PHP 返回类型提示,对象或 bool 值?

PHP Curl 请求返回 HTTP 错误 411 : The request must be chunked or have a content length

c++ - 关闭套接字不释放文件描述符

unix - 为什么符号链接(symbolic link)的权限默认为all-permissive?

linux - 类 Unix 系统中的循环符号链接(symbolic link)有什么用?

php - Laravel Dusk loginAs 不工作,当使用 DatabaseMigration 特性时

php - 无法使用php上传文件?

linux - 编写一个shell脚本,在该行的前面的文本文件中打印每行的行号

regex - 如何在sed中做if-then语句