第四章:第24节 PHP流程控制结构-文件加载之文件路径

更新于:2017-02-24 20:54:03

关于文件加载还有一个非常重要的问题需要注意,就是路径问题。


文件路径分为相对路径绝对路径,前面两节举得例子都是用的相对路径,使用相对路径很容易出现问题的。


看演示:


1.png

在根目录下a目录内有1.php文件。


1.png

在根目录下a目录内有2.php文件,前面我们已了解,路径1.php与./1.php是一样的,表示同目录。


在浏览器输入2.php:

1.png

能正常显示,那问题来了,继续往下看:


1.png

结果报错了。


1.png


这是因为路径不对造成的错误,为什么会这样?分析下:


3.php加载./a/2.php能正常加载,./a/2.php里包含加载同目录下1.php文件的代码,现在是在3.php中运行这些代码,根据代码的意思3.php是去找的自己同目录下的1.php,而不是a目录下的1.php,因为找错位置没有目标文件而报错。


相对路径会很容易出现问题,所以加载文件最好以绝对路径方式。


绝对路径的比较简单,不容易混淆出错,require|inclue 的就是对应磁盘中的文件。

require '/wwwroot/xxx.com/app/test/b.php';    // Linux中
require 'c:/wwwroot/xxx.com/app/test/b.php';  // windows中


我们也不会按照上面那种方式写,都写死了,如果整个网站根目录改变,我们总不能挨个文件去修改。


写代码程序一定要写活了,解决这个问题方式很多种,只说一个最常用也最值得推荐的一种方式:


1.png


1.png


结果能正常显示:

1.png

dirname()是一个函数,__FILE__是魔术常量,dirname(__FILE__)计算出来的是一个绝对路径形式的目录。


__FILE__可以返回PHP文件的路径,dirname()可以返回路径中的目录部分,哪个php文件用dirname(__FILE__)就返回的是哪个php文件所在目录的路径。


本节学习代码》》》