我有一个符号链接的目录树。它们被调用require_once,但有时它们被称为'm',有时被称为'mydir'。 'm'和'mydir'是符号链接的,但是当require_once被调用两次时,它将它们视为不同的文件和代码错误。Windows中的PHP和符号链接
require_once("m/myfile.php");
require_once("mydir/myfile.php);
我只希望文件包含一次,但它试图做两次。
我有一个符号链接的目录树。它们被调用require_once,但有时它们被称为'm',有时被称为'mydir'。 'm'和'mydir'是符号链接的,但是当require_once被调用两次时,它将它们视为不同的文件和代码错误。Windows中的PHP和符号链接
require_once("m/myfile.php");
require_once("mydir/myfile.php);
我只希望文件包含一次,但它试图做两次。
Windows中没有符号链接,很抱歉。
如果您已经检出或下载了代码(比如说github),然后将其删除到NTFS文件系统,则您的下载程序可能会为链接创建两次文件,并为链接文件创建一次文件。我经常看到这个
你看过实际的问题吗? – 2013-03-05 21:57:56
@WesleyMurch在阅读标题后刚刚回复:)(因为答案没问题)现在更新了,希望它现在更有帮助。还是我理解了完全错误的东西? – hek2mgl 2013-03-05 22:00:47
如果完全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"));
在所有情况下,目的是确保只有一个路径是有史以来实际需要,以及转换需要的替代版本的地方。
几年后窗户10下我有类似的问题:
问题是,符号链接被创建为“文件”符号链接,但指向目录。 删除符号链接,并与
mklink /D link target
一切工作按预期手动重新创建它们之后。
好的,是的,这是Windows中的问题。没有快速解决方案。使用默认包含路径和省略目录是一个快速修复。或者用'if(function/class_exists())'语句遍历整个... – Wrikken 2013-03-05 22:01:07
为什么你要在同一级别符号链接2个目录? – Basic 2013-05-05 17:23:45