2013-03-05 114 views
1

我有一个符号链接的目录树。它们被调用require_once,但有时它们被称为'm',有时被称为'mydir'。 'm'和'mydir'是符号链接的,但是当require_once被调用两次时,它将它们视为不同的文件和代码错误。Windows中的PHP和符号链接

require_once("m/myfile.php"); 
require_once("mydir/myfile.php); 

我只希望文件包含一次,但它试图做两次。

+0

好的,是的,这是Windows中的问题。没有快速解决方案。使用默认包含路径和省略目录是一个快速修复。或者用'if(function/class_exists())'语句遍历整个... – Wrikken 2013-03-05 22:01:07

+0

为什么你要在同一级别符号链接2个目录? – Basic 2013-05-05 17:23:45

回答

-1

Windows中没有符号链接,很抱歉。

如果您已经检出或下载了代码(比如说github),然后将其删除到NTFS文件系统,则您的下载程序可能会为链接创建两次文件,并为链接文件创建一次文件。我经常看到这个

+0

你看过实际的问题吗? – 2013-03-05 21:57:56

+0

@WesleyMurch在阅读标题后刚刚回复:)(因为答案没问题)现在更新了,希望它现在更有帮助。还是我理解了完全错误的东西? – hek2mgl 2013-03-05 22:00:47

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")); 

在所有情况下,目的是确保只有一个路径是有史以来实际需要,以及转换需要的替代版本的地方。

0

几年后窗户10下我有类似的问题:

  • 我通过混帐签出我们的项目,符号连接在混帐
  • 激活在项目的一些目录的链接被使用
  • 的Apache和bash在windows下工作没有任何问题与生成的符号链接
  • PHP,Windows资源管理器和CMD无法处理符号链接

问题是,符号链接被创建为“文件”符号链接,但指向目录。 删除符号链接,并与

mklink /D link target 

一切工作按预期手动重新创建它们之后。