关于在真实Web服务器上使用绝对/相对路径访问文件的问题咨询
关于在真实Web服务器上使用绝对/相对路径访问文件的问题咨询
嘿,我太懂你这种顾虑了!在本地XAMPP里改了站点根目录后,写的PHP文件引用路径到真实Apache服务器上失效,这确实是很多新手部署项目时会踩的坑。
先帮你理清楚核心问题:你在本地把XAMPP的DocumentRoot和Directory设成了D:/WEB-SITE/website,这时候本地环境里的所有路径都是基于这个目录的,但真实服务器的根目录肯定和你本地的D盘路径完全不一样——比如Linux服务器可能是/var/www/html,Windows服务器可能是C:/Apache24/htdocs/your-project,直接照搬本地的物理路径肯定会出错。
给你几个实用的解决办法,都是我自己部署项目时亲测好用的:
- 优先用PHP的预定义超全局变量
$_SERVER['DOCUMENT_ROOT']来拼接路径,比如你要引用根目录下的includes/config.php,就写:
这个变量会自动读取当前服务器的站点根目录路径,不管是本地XAMPP还是真实服务器,都能自动适配,完全不用手动修改路径,省心又稳妥。include($_SERVER['DOCUMENT_ROOT'] . '/includes/config.php'); - 如果习惯用相对路径,一定要注意当前PHP脚本的所在目录,比如你在
pages/about.php里引用根目录的includes/header.php,相对路径就是../includes/header.php,但这种写法容易因为脚本嵌套引用而出错,所以还是更推荐结合$_SERVER['DOCUMENT_ROOT']的绝对路径写法。 - 部署前记得把本地项目的文件结构原封不动地同步到服务器的DocumentRoot目录下——比如本地
website文件夹里的includes、pages、assets这些子文件夹,上传到服务器根目录后保持同样的层级,这样路径引用逻辑和本地完全一致,不会出问题。 - 绝对不要直接写死本地的物理路径,比如
include('D:/WEB-SITE/website/includes/config.php'),这种写法到了服务器上百分百找不到文件,直接pass掉。
内容来源于stack exchange
相关产品推荐
相关产品推荐

