PHP 之中存在的路径分为相对引用与绝对引用,‘./‘和‘../‘,这两种称之为相对引用。相对引用,这个相对是指的是运行脚本所在的目录,即:运行脚本的当前目录。
如果a.php,去include另外一个b.php,同时这个b.php又在相对引用另外一个b.html。那么引用之后b.html是相对a还是b呢?
见下图代码:
<?php header("content-type:text/html;charset=utf8"); include(‘./b/b.php‘); echo __FILE__; ?>
<?php header("content-type:text/html;charset=utf8"); echo __FILE__; include(‘./b.html‘); echo __FILE__; ?>
他们之间的目录关系:
a.php
b
b.php
b.html
运行a.php后:是找不到b.html
那么我们看打印的__FILE__, D:\warmp\wamp\www\b\b.php D:\warmp\wamp\www\b\b.php D:\warmp\wamp\www\a.php
当include(‘./b/b.php‘)之后,就相当于把b.php加载到了a.php之中了,这个时候b.php里面include(‘./b.html‘),这个相对路径就是,相对的是a.php 了,所以相对路径,相对的是运行脚本所在的目录,那么我们再看看__FILE__,虽然被include之后但是返回的路径,还是没有被调用之前所在的路径。
手册中解释__FILE__:文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__
总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
这和我们的运行结果是一致的。
时间: 2024-11-08 21:14:32