У меня тройной вложенный 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
я получаю 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) (построено: 6 августа 2014 г. 05:09:45)
Обновить
php foo2.php
также не работает
Мы выяснили, что использование только абсолютных путей работает. Кажется, что проблема заключается в смешении.