嵌套的require_once,绝对路径不起作用

时间:2014-11-12 10:47:36

标签: php debugging

我有一个三重嵌套require_once

user@mybox:/tmp/foo $ cat bar.php 
<?php
ini_set('display_errors', 1);
require_once 'foo3.php';

user@mybox:/tmp/foo $ cat foo3.php 
<?php

require_once 'foo2.php';
echo "foo3" . PHP_EOL;

user@mybox:/tmp/foo $ cat foo2.php 
<?php

require_once 'foo.php';
echo "foo2" . PHP_EOL;

user@mybox:/tmp/foo $ cat foo.php 
<?php

require_once 'Mage.php';

echo "foo" . PHP_EOL;

user@mybox:/tmp/foo $ cat Mage.php 
<?php

die('require once works' . PHP_EOL);

这样做:调用php bar.php时,我会得到输出require once works

如果我现在更改foo.php以使用绝对路径:

user@mybox:/tmp/foo $ cat foo.php
<?php

require_once '/tmp/foo/Mage.php';

echo "foo" . PHP_EOL;

我得到以下输出:

user@mybox:/tmp/foo $ php bar.php 
foo
foo2
foo3

最后一个文件的包含不起作用。

非嵌套require_once也有效:

user@mybox:/tmp/foo $ php foo.php 
require once works

这只发生在某些机器上(具有相同的PHP版本PHP 5.3.3(cli)(内置:2014年8月6日05:09:45)

更新

php foo2.php 

也无效

1 个答案:

答案 0 :(得分:0)

我们发现仅使用绝对路径是有效的。混合似乎是问题所在。