Очень странно, кто-нибудь когда-нибудь подвел итог?
Иногда он также проверяет каталог включенного файла.
Но иногда нет.
Д:\тест\1.php
<?php
include('sub\2.php');
Д:\тест\2.php
<?php
include('3.php');
Где 3.php
находится в том же каталоге, что и 2.php
.
Вышеупомянутое работает, но почему? Текущий каталог должен быть D:\test
, но он все еще может найти 3.php, который находится в D:\test\sub
Дополнительная история(последняя)
Около года назад я столкнулся с этой проблемой, а затем исправил ее с помощью жесткого кодирования, как показано ниже:
Общий.php:
if (file_exists("../../../Common/PHP/Config.inc"))
include('../../../Common/PHP/Config.inc');
if (file_exists("../../Common/PHP/Config.inc"))
include('../../Common/PHP/Config.inc');
if (file_exists("../Common/PHP/Config.inc"))
include('../Common/PHP/Config.inc');
if (file_exists("Common/PHP/Config.inc"))
include('Common/PHP/Config.inc');
Где Config.inc
находится в том же каталоге, что и Common.php
include(dirname(__FILE__).'/Config.inc');
— это всегда будет работать, независимо отinclude_path
и того, в какой файл Common.php включен. Если нет возможности найти Config.inc вinclude_path
(куда часто включается текущий каталог), то вы можете просто вызватьinclude 'Config.inc';
, хотя это, возможно, менее эффективно, поскольку сначала выполняется поиск вinclude_path
(что не удается). - person MrWhite   schedule 10.02.2015include('sub\2.php');
никогда бы не сработало.) - person MrWhite   schedule 10.02.2015