PHP函数set_include_path的一点疑问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP函数set_include_path的一点疑问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2483字,纯文字阅读大概需要4分钟。
内容图文
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir']);set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['libDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir'] . 'app');
代码如上,P_S即PATH_SEPARATOR
问题:
为什么每个路径前都要加'.'这个呢?
我查了下手册,在评论中有这么一个,这说明加它还是有必要的,但是原因还是未知....
joel at pittet dot ca17-Nov-2010 02:46
Seems set_include_path wasn't working for me.
The problem was i didn't have .: in my include_path
Which seemed to stop the set_include_path().
回复内容:
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['libDir']);
set_include_path(get_include_path() . P_S . '.' . P_S . $siteConf['baseDir'] . 'app');
代码如上,P_S即PATH_SEPARATOR
问题:
为什么每个路径前都要加'.'这个呢?
我查了下手册,在评论中有这么一个,这说明加它还是有必要的,但是原因还是未知....
joel at pittet dot ca17-Nov-2010 02:46
Seems set_include_path wasn't working for me.
The problem was i didn't have .: in my include_path
Which seemed to stop the set_include_path().
"."表示当前目录,":"是两个不同的include path值的分隔符。
include_path中不包含".",PHP碰到include($file), require($file)语句时就不在当前目录(如果访问的是/var/www/html/my_app/index.php,当前目录就是/www/html/my_app/)寻找$file,直接去其它include_path中寻找。
include_path中加不加"."要看你会不会用相对路径包含当前目录下的文件,PHP引擎并不强求。
真机测试测试表明,不管是改ini,还是在代码里调set_include_path(),都可以不带"."
图1:ini中设置include_path
图2:ini中不设置include_path,代码中调用set_include_path()
图3:ini中设置include_path,代码中调用set_include_path()
图4:ini中设置include_path(包含当前目录),代码中调用set_include_path()
此外,如果代码中不调用set_include_path(),ini中也不设置include_path,直接echo get_ include_path(),会输出"."
还有,第一次测试的时候,先set_include_path("/var"),再echo get_include_path(),居然什么都没输出,但我再也没能重现这个现象,不确定是不是当时test.php属于root用sudo的缘故(理论上讲不是,但就是没能重现)
延伸阅读想了解include的更多详情,你可以看我前两周写的一篇文章《细说PHP类库自动加载》:http://weibo.com/1779910713/zg59ehZCd,第二页,第一段。
这货估计是直接 set_include_path("/some/path"); 于是在 include(当前目录下的文件) 的时候出错了。
这就类似于在linux下执行当前目录下的文件不用上 ./ 会出错一样。
如果你用了get_include_path() 去拼的话就不需要这样了。你可以把get_include_path()的值echo出来看看,里头已经包含了 "."
内容总结
以上是互联网集市为您收集整理的PHP函数set_include_path的一点疑问全部内容,希望文章能够帮你解决PHP函数set_include_path的一点疑问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。