我有一个带符号链接的目录树。使用require_once调用它们,但有时它们用'm'和有时'mydir'引用。 'm'和'mydir'是符号链接的,但是当require_once被调用两次时,它会将它们视为不同的文件和代码错误。
require_once("m/myfile.php");
require_once("mydir/myfile.php);
我只希望文件包含一次,但它会尝试两次。
答案 0 :(得分:1)
几年后,在Windows 10下,我遇到了类似的问题:
问题是,符号链接创建为“文件”符号链接,但指向目录。 删除符号链接并使用
手动重新创建它们mklink /D link target
一切都按预期工作。
答案 1 :(得分:0)
Windows中没有符号链接,抱歉。
如果您已经检出或下载了代码,例如github然后将其删除到NTFS文件系统,则下载程序可能会为链接创建两次文件,为链接文件创建一次。我经常看到这个
答案 2 :(得分:0)
如果完全是OO http://php.net/manual/en/language.oop5.autoload.php或修复路径功能,我会使用自己的require函数/自动加载。
即
//custom require
function myRequireOnce($filePath)
{//ensure only one version of sym path is ever used
$filepath = str_replace('mydir', 'm' , $filepath); //possibly too simple
require_once($filepath);
}
//fix path function
_fp($path)
{
return str_replace('mydir', 'm' , $filepath);
}
require_once(_fp("m/myfile.php"));
在所有情况下,对象都是为了确保实际上只需要一个路径,并且在替代版本上进行转换。