PHP函数set_include_path的一点疑问
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出来看看,里头已经包含了 "."
上一篇: Drupal7中常用的数据库操作实例
下一篇: 10 个有意思的 PHP 教程
推荐阅读
-
PHP函数set_include_path的一点疑问
-
exec 函数执行异常——应用:PHP提取apk的icon图标图片
-
PHP数学计算的内部函数
-
容易混淆的四个php文本函数strstr strrchr substr stristr
-
使用"函数递归"实现基于php和MySQL的动态树型菜单_PHP
-
php metaphone()函数的定义和用法,phpmetaphone_PHP教程
-
PHP strtotime函数的具体应用方法
-
php filter函数库 (与变量跟类型有关的扩展),可以过滤常用邮件,IP,变量数组等
-
php中的注释、变量、数组、常量、函数应用介绍
-
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法