在《samrty配置文件路径问题》我说过了一个include和define一起使用问题,刚刚看了一篇博客文章《PHP中include路径的解决方法汇总》,里面说的内容正好解决了我的疑问,也给出了一些解决办法。
我再重新表述我的问题吧:
a.php
1
2
3
4
5
6
7
8
|
<?php
define(
'PATH'
,dirname(
__FILE__
));
include
(
'./index.php'
);
.
.
.
?>
|
b.php
1
2
3
4
|
<?php
include
(../a.php);
echo
PATH;
|
其中a.php和index.php在同一个文件夹,而b.php在a.php的父文件夹中。
运行上面b.php,结果提示错误,说include()函数fial to open index.php,然后输出了PATH,而PAHT的值时a.php的绝对路径。
这是怎么一回事,如果说include函数的工作机制是把文件不做任何处理就包括进来,那么PATH的值应是b.php的绝对路劲;如果说include函数先要对一些函数做处理后在包括进来,那include('./index.php');问什么又不执行呢?究竟include和define的工作机制是怎样的?-----引用了我csdn的提问。
原来上面的问题是跟__FILE__有关的,因为__FILE__的值总是跟使用它的文件的路径是相等的,而不管它是否被包含。所以问题并不是与include、define,但是include在php中确实有问题,《PHP中include路径的解决方法汇总》中有说到,大家不妨去看看!!