Windows中的PHP和Symlinks

时间:2013-03-05 21:54:06

标签: php windows symlink

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

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

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

3 个答案:

答案 0 :(得分:1)

几年后,在Windows 10下,我遇到了类似的问题:

  • 我通过git检测了我们的项目,在git中激活了符号链接
  • 在项目中使用了一些目录符号链接
  • Windows下的Apache和bash在生成的符号链接
  • 时没有任何问题
  • PHP,Windows资源管理器和CMD无法处理符号链接

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

手动重新创建它们
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"));

在所有情况下,对象都是为了确保实际上只需要一个路径,并且在替代版本上进行转换。

相关问题