用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");
原文链接:https://www.qiquanji.com/post/9350.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知