在本地主机上。我有以下目录结构:
/share/www/trunk/wp-content/plugins/otherfolders
/share/www/portfolio/wp-content/symlink
Where 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__
自动解析符号链接。
从 PHP 手册魔法常数 http://php.net/manual/en/language.constants.predefined.php
...从 PHP 4.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"]
为文件系统路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)