1

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

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

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

4

3 回答 3

3

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

  • 我通过 git 检查了我们的项目,在 git 中激活了符号链接
  • 在项目中使用了一些目录符号链接
  • Windows 下的 Apache 和 bash 工作正常,生成的符号链接没有任何问题
  • PHP、Windows Explorer 和 CMD 无法处理符号链接

问题是,符号链接被创建为“文件”符号链接,但指向目录。删除符号链接并手动重新创建它们后

mklink /D link target

一切都按预期工作。

于 2017-10-23T08:18:20.493 回答
0

如果完全 OO http://php.net/manual/en/language.oop5.autoload.php或修复路径函数,我将使用我自己的 require 函数/自动加载 。

IE

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

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

于 2013-03-05T22:12:34.227 回答
0

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

如果您已经从 github 签出或下载了代码,然后将其放到 NTFS 文件系统中,您的下载程序可能会为链接创建文件两次,为链接文件创建一次。我经常看到这个

于 2013-03-05T21:56:41.563 回答