我稍微记得从很久的PHP天(几年前)开始,不同的功能想要有不同的路径。我的意思是......从不同的角度出发。有些是相对的,有些是绝对的,等等。
fopen怎么样?这是同样的要求吗?相同情况下的路径相同吗?
答案 0 :(得分:1)
路径始终相对于初始脚本的位置,即使解析器正在通过位于不同目录中的包含。
要可靠地使用相对于当前文件的路径,请使用
dirname(__FILE__)
或在PHP 5中
__DIR__
另外,正如@troelskn在下面指出的那样,require
和include
搜索include_path.
答案 1 :(得分:0)
include和require将首先查找与php.ini中给出的设置相关的文件。
说你的ini文件的包含路径条目是:
include_path = "var/www/includes;/var/www/PEAR"
然后在你的脚本中,无论你的文档树在哪里,例如
/var/www/html/website1/miles/down/in/folders/index.php
你这样做是为了包含一个文件:
include 'settings.php' ;
只要settings.php是include_path文件夹之一,它就会被包含在内,那么你就可以不再担心相对/绝对路径关系了。
如果您愿意,可以使用ini_set()在.htaccess文件和每个文件中更改此设置。
更多相关信息: http://php.net/manual/en/function.set-include-path.php http://www.modwest.com/help/kb.phtml?cat=5&qid=98
或google for“include_path php”
答案 2 :(得分:0)
Arg我想发表评论,但我不能......
@troelskn:
当您使用dirname(__ FILE __)时,Include不会解析为包含路径,因为您提供了包含的绝对路径。仅当您不提供任何路径,仅搜索文件名(不适用于绝对或相对路径)时,才会搜索包含路径。
如果定义了一个路径 - 无论是绝对路径(从Windows上的驱动器号或者\或Unix / Linux系统上的/开始)还是相对于当前目录(以。或..开头) - include_path将被忽略共
答案 3 :(得分:0)
这个问题已经很老了,但是仍然存在一些混乱。具有不同相对路径的不同功能在某些点仍然存在。在示例中,以下内容可能无法按预期工作:
if(is_file($target)){
include $target;
}
is_file,is_dir,fopen - 将使用相对于HTTP请求请求的文件的路径,并且不受set_include_path()的影响
include,require - 可以使用set_include_path()
分配不同的路径更正确的是,上面的代码应如下所示:
if(is_file(get_include_path().'/'.$target)){
include $target;
}