16
2020
05

php中include包含页面路径问题解决方法

用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

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

微信扫码关注

更新实时通知

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。