require_once中使用./和../时遇到的坑

三个文件

r.php   c.php  和 r/d.php

r.php

<?php
require_once 'r/d.php';

echo 'sssss';

?>

d.php

<?php
require_once '../c.php';
echo 'dddddd';
echo '<br />'

?>

c.php

<?php

echo 'cccccc';
echo '<br />'

?>

当执行r.php时就会报错:

Warning: require_once(../c.php): failed to open stream: No such file or directory in D:\phpStudy\PHPTutorial\WWW\php\r\d.php on line 2

Fatal error: require_once(): Failed opening required '../c.php' (include_path='.;C:\php\pear') in D:\phpStudy\PHPTutorial\WWW\php\r\d.php on line 2

但是我们直接执行d.php时是不会报错的

这里的r.php实际执行的就类似这样:

<?php
//require_once 'r/d.php';   //此处相当于这样引入的


require_once '../c.php';    //这样的话就相当于是r.php的上级找的c.php
echo 'dddddd';
echo '<br />'


echo 'sssss';
?>

可以结合使用  dirname(dirname(__FILE__))  使用绝对路径

posted @ 2019-08-05 17:52  子焱  阅读(2948)  评论(0编辑  收藏  举报