php set_include_path сводит меня с ума
Мне нужно включить файл в PHP, поэтому я делаю
$web_proc = '../res/proc'; //variable read from config file I can't change
//in my file
include_once($web_proc . '/check_sprache.php');
и выходы PHP:
Предупреждение: include_once(../res/proc/check_sprache.php): не удалось открыть поток: нет такого файла или каталога в /Users/user/Sites/site/res/pdf/rechnung.php в строке 62
Предупреждение: include_once(): не удалось открыть '../res/proc/check_sprache.php' для включения (include_path='.:') в /Users/user/Sites/site/res/pdf/rechnung.php в строке 62
Поэтому я изменяю путь включения:
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__) . DIRECTORY_SEPARATOR);
и попробуйте еще раз, но PHP выводит:
Предупреждение: include_once(../res/proc/check_sprache.php): не удалось открыть поток: нет такого файла или каталога в /Users/user/Sites/site/res/pdf/rechnung.php в строке 62
Предупреждение: include_once(): не удалось открыть "../res/proc/check_sprache.php" для включения (include_path='.:: / Users / user / Sites / site / res /') в / Users / user / Sites / сайт / res / pdf / rechnung.php на линии 62
Но если, если я сделаю
include_once(dirname(__DIR__). DIRECTORY_SEPARATOR . $pfadweb_proc . '/check_sprache.php');
оно работает. Но это не решение, так как включаемый файл содержит больше файлов с относительным путем, поэтому они также не найдены.
Так что я либо неправильно понимаю путь включения PHP, либо он просто троллит меня.
Кто-нибудь может помочь?
1 ответ
Путь включения выглядит странно во втором примере; У вас есть два PATH_SEPARATOR
персонажи и трейлинг DIRECTORY_SEPARATOR
хотя я сомневаюсь, что это проблема.
Попробуйте это вместо этого
set_include_path(implode(PATH_SEPARATOR, [ // use array() if PHP < 5.4
dirname(__DIR__), // this should be /Users/user/Sites/site/res
get_include_path()
]));
include_once 'proc/check_sprache.php';
Это добавит родительский каталог (/Users/user/Sites/site/res
) из CWD (/Users/user/Sites/site/res/pdf
) к вашему включаемому пути.
любой include
операторы в любых других файлах могут использовать относительный путь от /Users/user/Sites/site/res
,