【发布时间】:2010-07-11 03:42:49
【问题描述】:
在本地主机上。我有以下目录结构:
/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/portfolio 目录中执行的脚本中包含到/share/www/trunk/.../plugins 目录的符号链接中?
虽然此问题仅发生在我的测试服务器上,但我希望有一个可安全分发的解决方案,因此爬上一个额外的级别不是一种选择。
【问题讨论】:
-
您知道您正在执行 FILE 业务的脚本相对于入口点的位置吗?在您的示例上下文中,$_SERVER['SCRIPT_FILENAME'] 等同于什么?
-
宾果游戏。我确切地知道我需要爬多少个目录。我只需要拥有正确的基本目录。发布答案,赏金就是你的了。
-
另一个想法是使用硬链接而不是符号链接。或者是否有需要符号链接的原因(如其他挂载点等)?
-
另一种选择是删除符号链接,而是挂载目录 (
mount -o bind target link)。您会得到类似于符号链接的行为,并且 __FILE__ 可以正确解析。这是一种技巧,当然并不总是一种选择,但在某些用例中可能是一种可行的选择。另外,不要忘记将它添加到 fstab 文件中,否则它会在重新启动后消失。