我需要在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):无法打开 stream:没有这样的文件或目录 /Users/user/Sites/site/res/pdf/rechnung.php第62行 警告: include_once():无法打开'../res/proc/check_sprache.php' 包含(include_path =':')in 第62行/Users/user/Sites/site/res/pdf/rechnung.php
所以我改变了包含路径:
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__DIR__) . DIRECTORY_SEPARATOR);
再试一次,但PHP输出:
警告:include_once(../ res / proc / check_sprache.php):无法打开 stream:没有这样的文件或目录 /Users/user/Sites/site/res/pdf/rechnung.php第62行 警告: include_once():无法打开'../res/proc/check_sprache.php' 包含(include_path ='。:: / Users / user / Sites / site / res /') 第62行/Users/user/Sites/site/res/pdf/rechnung.php
但如果我这样做
include_once(dirname(__DIR__). DIRECTORY_SEPARATOR . $pfadweb_proc . '/check_sprache.php');
它有效。但这不是解决方案,因为包含的文件包含更多具有相对路径的文件,因此它们也找不到。
所以要么我误解了PHP包含路径,要么只是拖着我。
有人可以帮忙吗?
答案 0 :(得分:0)
第二个例子中包含路径看起来很奇怪;您有两个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';
这会将CWD(/Users/user/Sites/site/res
)的父目录(/Users/user/Sites/site/res/pdf
)添加到您的包含路径。
任何其他文件中的任何include
语句都可以使用/Users/user/Sites/site/res
的相对路径。