在本地主机上.我有以下目录 struct :

/share/www/trunk/wp-content/plugins/otherfolders

/share/www/portfolio/wp-content/symlink

其中symlink是指向/trunk/.../plugins/的符号链接.基本上,这是因为我需要测试多个WordPress安装并设置它们,但我不想到处移动插件,复制并粘贴它们.

但是,有时我需要爬升目录树以包含一个配置文件:

 $root = dirname(dirname(dirname(dirname(__FILE__))));
      if (file_exists($root.'/wp-load.php')) {
          // WP 2.6
          require_once($root.'/wp-load.php');
      }

文件夹始终解析为:

/share/www/trunk

即使插件正在执行并包含在

/share/www/portfolio/

在PHP中,是否可以将从符号链接到/share/www/trunk/.../plugins目录的脚本包含在share/www/portfolio目录中的文件?

虽然这个问题只发生在我的测试服务器上,但我希望有一个安全的可分发解决方案.

推荐答案

我看到你的代码的问题是__FILE__自动解析符号链接.

Magic Constants页的PHP手册

... 由于PHP4.0.2,__FILE__始终包含一个绝对路径,并解析符号链接...

你可以试着用$_SERVER["SCRIPT_FILENAME"]代替.

$root = realpath(dirname(dirname(dirname(dirname($_SERVER["SCRIPT_FILENAME"])))));
  if (file_exists($root.'/wp-load.php')) {
      // WP 2.6
      require_once($root.'/wp-load.php');
  }

注意,我在根目录中添加了realpath()函数.根据您的设置,您可能需要,也可能不需要.

编辑:文件系统路径使用$_SERVER["SCRIPT_FILENAME"]而不是$_SERVER["PHP_SELF"].

Linux相关问答推荐

GO:当使用NewManager调用创建cgroup时,权限被拒绝

通过添加1位数字替换最后4位数字(不包括0x)

Git - 打印以不同编码混合的文件

从 ALSA USB 硬件设备获取 USB 设备文件路径

x64 NASM 汇编程序在程序开始时显示分段错误

如果列小于 X,linux 合并行

如何更改文件的上次访问/修改/更改日期?

ENQCMD 指令的好处和微操作是什么?

函数在 shell 脚本中抛出错误语法错误:} unexpected

如何安装脚本以从命令行的任何位置运行?

在使用文件时截断文件 (Linux)

如何在非阻塞套接字上处理 OpenSSL SSL_ERROR_WANT_READ / WANT_WRITE

size_t 和 off_t 的用法有什么区别?

polkitd未注册身份验证代理的解释

以原子方式移动目录

从bash中的字符串中删除所有特殊字符和大小写

ngrok 如何在防火墙后工作?

如何在 linux 或 unix 上找到用户的主目录?

rename() 是原子的吗?

如何在我的终端中编辑文本文件