index.php :
set_include_path('D:/xampp/htdocs/include/');
include('./test.php'); exit();
test.php在include目录下, index.php 在其它目录.
为什么上面的代码会报错? :
Warning: include(): Failed opening './test.php' for inclusion (include_path='D:/xampp/htdocs/include/') in D:\xampp\htdocs\test\test\index.php on line 15
换成:include('/test.php');就ok了.
怎么让它支持那个./呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
为什么你需要这样呢?
你用的方法不对。
如果你使用了set_include_path,那就代表你的这个path是一个根目录,所有在里面的文件都是以相对路径存在,也就是说你的test.php相当于在include_path的根路径下,自然要用/test.php
而./test.php则代表你当前请求的index.php的同级目录,也就是说./这个代表了index.php所在目录。
假如你需要这种调用:
include/
|----test.php
web/
|----index.php
那么你可以在index.php中使用"../include/test.php"这种模式来引用test.php而不再设置includepath.
为什么你需要这样呢?
你用的方法不对。
如果你使用了set_include_path,那就代表你的这个path是一个根目录,所有在里面的文件都是以相对路径存在,也就是说你的test.php相当于在include_path的根路径下,自然要用/test.php
而./test.php则代表你当前请求的index.php的同级目录,也就是说./这个代表了index.php所在目录。
假如你需要这种调用:
include/
|----test.php
web/
|----index.php
那么你可以在index.php中使用"../include/test.php"这种模式来引用test.php而不再设置includepath.
php默认相对路径都是以被访问页面所在路径为准的。无论一个入口页面,里面包含多少文件,相对路径,都是以这个页面为准。如果访问
index
.php根路径是
index.php所在的目录,但test.php并不在
index
.php所在的目录下
ps:我测试了下,为什么include('/test.php');不能加/呢,而是include('test.php');
@saharabear
php默认相对路径都是以被访问页面所在路径为准的。无论一个入口页面,里面包含多少文件,相对路径,都是以这个页面为准。如果访问
index
.php根路径是
index.php所在的目录,但test.php并不在
index
.php所在的目录下
ps:我测试了下,为什么include('/test.php');不能加/呢,而是include('test.php');
@saharabear
./ 是相对路径,/ 是绝对路径. 这两种写法都不会使用 include_path 的设置.
只有被包含的文件只存在文件名不存在路径的时候,才会使用include_patch设置.
include_path一般的默认设置是,include_path=".;/usr/lamp/php/PEAR"
其中的.就表示当前目录,你使用set_include_path修改了include_path,然后你引入文件的时候使用了相对路径,默认的就会调用include_path里的路径来查找,首先就找.,结果木有找到,就报错了,直接用/的话也是从include_path里找,把引用路径跟Include_path里的路径拼接在一起,根据默认设置就是/usr/lamp/php/PEAR/test.php,这就是区别
include_path一般的默认设置是,include_path=".;/usr/lamp/php/PEAR"
其中的.就表示当前目录,你使用set_include_path修改了include_path,然后你引入文件的时候使用了相对路径,默认的就会调用include_path里的路径来查找,首先就找.,结果木有找到,就报错了,直接用/的话也是从include_path里找,把引用路径跟Include_path里的路径拼接在一起,根据默认设置就是/usr/lamp/php/PEAR/test.php,这就是区别
./ 是相对路径,/ 是绝对路径. 这两种写法都不会使用 include_path 的设置.
只有被包含的文件只存在文件名不存在路径的时候,才会使用include_patch设置.
set_include_path(get_include_path()."path")