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__)) 使用绝对路径