PHP使用require无法找到路径,但HTML链接正常的问题咨询
PHP文件引用路径问题解析及解决方法
问题本质
HTML中的/api/connection.php是Web服务器层面的网站根路径,由Apache/Nginx这类服务器解析,指向你部署网站的根目录下的api文件夹;但PHP的require "/api/connection.php"是服务器文件系统的绝对路径,它指向的是服务器系统的根目录(比如Linux的/、Windows的C:\),完全不是同一个位置,所以必然找不到文件。
可行解决方法
用网站根目录拼接路径
利用$_SERVER['DOCUMENT_ROOT']获取Web服务器配置的网站根目录绝对路径,再拼接目标文件路径:print '<a href="/api/connection.php">Huh</a>'; ob_start(); require $_SERVER['DOCUMENT_ROOT'] . "/api/connection.php"; ob_end_clean();这个变量会直接返回你的网站在服务器文件系统中的根路径(比如
/var/www/html),拼接后就是正确的文件位置。使用相对当前脚本的路径
如果当前执行的PHP脚本和api文件夹处于网站根目录的同级子目录,比如脚本在public文件夹下,就可以用相对路径:require "../api/connection.php";注意:这里的相对路径是相对于当前运行的PHP脚本文件的位置,不是浏览器请求的URL路径。
配置PHP的include_path
在php.ini配置文件中,把存放工具类的文件夹添加到include_path:include_path = ".:/path/to/your/api/folder"配置完成后重启Web服务器,之后就能直接用文件名引用文件:
require "connection.php";
额外排查技巧
- 用
realpath()函数打印PHP实际解析的路径,方便排查:
输出的路径就是PHP尝试查找的位置,对比你的网站根目录就能明确差异。echo realpath("/api/connection.php"); - 优先使用
require_once或include_once,避免重复引用文件引发的报错。
内容的提问来源于stack exchange,提问作者Brentspine
相关产品推荐
相关产品推荐

