为了账号安全,请及时绑定邮箱和手机立即绑定

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

connect.php文件

571f250a0001e65105000422.jpg


acticle.add.handle.php文件571f250b0001818c05000546.jpg

config.php文件

571f250b00018dc305000270.jpg

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


正在回答

2 回答

这个php的require包含文件路径是个比较坑的东西,特别是使用相对路径。层层包含容易出问题。我折腾了两天才解决。你在article.add.handle.php里require两个文件,其实可以这样理解:

  1. require_once('../config.php')这句是重新确定了当前文件的基准路径,即根目录'/'。为什么这句代码能确定基准路径呢?因为config.php中没有包含其他文件,所以它参考的基准路径就是根目录'/'。换句说,可以在article.add.handle.php中随意require一个(根目录下没有包含其他文件的)文件,即使是空文件也可以。

  2. 然后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');
……
?>


0 回复 有任何疑惑可以回复我~
#1

qq_淡淡的回忆_0 提问者

非常感谢!
2016-08-29 回复 有任何疑惑可以回复我~

我就引用一个

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP与MySQL关系大揭秘
  • 参与学习       72505    人
  • 解答问题       978    个

让我们一起走上探秘之旅,找寻php和mysql恋爱的真谛

进入课程

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号