用php的include包含文件时经常不注意就会发现严重的问题,例如:网站根目录下有index.php和文件夹A和B,A文件夹里有1.php,B文件夹里有2.php
<web>(网站根目录)
├<A>文件夹
│ │
│ └1.php
├<B>文件夹
│ │
│ └2.php
└index.php
在1.php中通过include("../B/2.php");来引入B目录下的2.php文件
在index.php中通过include("A/1.php");来引入A目录下的1.php文件
运行出来当然会出现问题,找不到../B/2.php文件,静下心来好好分析一下,index.php中引用了A目录下的1.php文件,这时候1.php被编译到index.php中执行,也就是相当于1.php同index.php一样位于网站根目录下,但是在1.php别忘记了一断代码include("../B/2.php");
"../"意味着什么?上一级目录,现在1.php已经在根目录下了,这时候再上一级,那就已经找不到2.php了,所以问题就出现在此。
那么如何解决能?很多人会想到include("/B/2.php"),这样不就好了,同样不行,php在include中使用"/"并不是我们所想象的网站根目录,它代表的是当前的目录,因此还是不行。
既然不能用相对的,那我们可以改用绝对路径的方式,realpath("./") 用于获取当前网站根目录的绝对路径,如:c:\wamp\www\网站名称\
因此我们可以将include("../B/2.php");改成include(realpath("./")."B/2.php");
这样的话,不管页面在哪一级目录,我都可以去引用,不用再担心路径问题了!
总结:
realpath("./") 用于获取当前网站根目录的绝对路径
完美使用绝对路径调用方法include(realpath("./")."你的路径/***.php");
或者include(./你的路径/***.php");
温馨提示:文章内容系作者个人观点,不代表雅爱博客对观点赞同或支持。
版权声明:本文为 转载 文章,来源于 点击这里 ,版权归原作者所有,欢迎分享本文,转载请保留出处!