为什么我的acticle.add.handle.php一定要引用两个php文件才能执行
connect.php文件

acticle.add.handle.php文件
config.php文件

为什么acticle.add.handle.php一定要引用config.php和connect.php才能正常执行,只引用connect.php文件就会报错,connect.php不是已经包含了config.php文件吗?
connect.php文件

acticle.add.handle.php文件
config.php文件

为什么acticle.add.handle.php一定要引用config.php和connect.php才能正常执行,只引用connect.php文件就会报错,connect.php不是已经包含了config.php文件吗?
2016-04-26
这个php的require包含文件路径是个比较坑的东西,特别是使用相对路径。层层包含容易出问题。我折腾了两天才解决。你在article.add.handle.php里require两个文件,其实可以这样理解:
require_once('../config.php')这句是重新确定了当前文件的基准路径,即根目录'/'。为什么这句代码能确定基准路径呢?因为config.php中没有包含其他文件,所以它参考的基准路径就是根目录'/'。换句说,可以在article.add.handle.php中随意require一个(根目录下没有包含其他文件的)文件,即使是空文件也可以。
然后require_once('../connect.php')就会参考上述中的根目录,以确定"../"就是上两级目录,即根目录,然后找到了"connect.php"。
其实你上面那样子require两个文件是有点不规范。可以这样来:
1. 在根目录下写一个'/root.path.php'文件,固定一个绝对路径,dirname(__FILE__)返回文件的当前路径.
<?php
define('ROOT_PATH', dirname(__FILE__).'/'); //这里ROOT_PATH==‘当前文件路径’。
?>2. 然后就可以随意在别的文件这样require了,例如在article.add.handle.php中:
<?php
require_once('../root.path.php');
require_once(ROOT_PATH.'connect.php');
……
?>举报