PHP中require和include路径问题详解

PHP命令行模式下解决require加载路径错误的方法 常量,您应该能够解决PHP命令行模式下require加载路径错误的问题。相对于相对路径,绝对路径可以确保文件的准确加载。相对路径是相对于当前脚本文件的路径来指定要加载的文件。相对路径结合,构建出要加载的文件的绝对路径。确保相对路径的正确性,以便PHP可以正确加载文件。表示要加载的文件相对于当前脚本文件的路径。确保相对路径的正确性,以便PHP可以正确加载文件。替换为您实际要加载的文件的路径。确保路径的正确性,以便PHP可以找到并加载文件。与要加载的文件的相对路径结合使用,可以解决路径错误问题。 阅读详情

1 绝对路径、相对路径和未确定路径

相对路径

相对路径指以.开头的路径,例如

./a/a.php (相对当前目录)   
../common.inc.php (相对上级目录),

绝对路径

绝对路径是以 / 开头或者windows下的 C:/ 类似的盘符开头的路径,全路径不用任何参考路径就可以唯一确定文件的最终地址。 例如

/apache/wwwroot/site/a/a.php
c:/wwwroot/site/a/a.php

未确定路径

凡是不以 . 或者 / 开头、也不是windows下 盘符:/ 开头的路径,例如

a/a.php 
common.inc.php,

开始以为这也是相对路径,但在php的include/require包含机制中,这种类型的路径跟以 . 开头的相对路径处理是完全不同的。require './a.php' 和 require 'a.php' 是不同的!

下面分析这三种类型包含路径的处理方式:首先记住一个结论:如果包含路径为相对路径或者绝对径,则不会到include_path(php.ini中定义的include_path环境变量,或者在程序中使用set_include_path(...)设置)中去查找该文件。

测试环境说明

注意:下面的讨论和结论基于这样的环境: 假设 A=http://www.xxx.com/app/test/a.php,再次强调下面的讨论是针对直接访问A的情况。


2. 相对路径:
相对路径需要一个参考目录才能确定文件的最终路径,在包含解析中,不管包含嵌套多少层,这个参考目录是程序执行入口文件所在目录。

示例1

A中定义  require './b/b.php';  // 则B=[SITE]/app/test/b/b.php
B中定义  require './c.php';    // 则C=[SITE]/app/test/c.php 不是[SITE]/app/test/b/c.php

示例2

A中定义  require './b/b.php';  // 则B=[SITE]/app/test/b/b.php
B中定义  require '../c.php';   // 则C=[SITE]/app/c.php  不是 [SITE]/app/test/c.php

示例3

A中定义  require '../b.php';   //则B=[SITE]/app/b.php
B中定义  require '../c.php';   //则C=[SITE]/app/c.php  不是 [SITE]/c.php

示例4:

A中定义  require '../b.php';   // 则B=[SITE]/app/b.php
B中定义  require './c/c.php';  / /则C=[SITE]/app/test/c/c.php  不是 [SITE]/app/c/c.php

示例5

A中定义  require '../inc/b.php';  // 则B=[SITE]/app/inc/b.php
B中定义  require './c/c.php';     // 则C还是=[SITE]/app/test/c/c.php  不是 [SITE]/app/inc/c/c.php

示例6

A中定义  require '../inc/b.php';  // 则B=[SITE]/app/inc/b.php
B中定义  require './c.php';       // 则C=[SITE]/app/test/c.php  不是 [SITE]/app/inc/c.php


3. 绝对路径

绝对路径的比较简单,不容易混淆出错,require|inclue 的就是对应磁盘中的文件。

require '/wwwroot/xxx.com/app/test/b.php';    // Linux中
require 'c:/wwwroot/xxx.com/app/test/b.php';  // windows中
dirname(__FILE__)计算出来的也是一个绝对路径形式的目录,但是要注意__FILE__是一个Magic constants,不管在什么时候都等于写这条语句的php文件所在的绝对路径,因此dirname(__FILE__)也总是指向写这条语句的php文件所在的绝对路径,跟这个文件是否被其他文件包含使用没有任何关系。

示例1

A中定义  require '../b.php';                  // 则B=[SITE]/app/b.php
B中定义  require dirname(__FILE__).'/c.php';  // 则B=[SITE]/app/c.php

示例2

A中定义  require '../inc/b.php';              // 则B=[SITE]/app/inc/b.php
B中定义  require dirname(__FILE__).'/c.php';  // 则B=[SITE]/app/inc/c.php 始终跟B在同一个目录
结论:不管B是被A包含使用,还是直接被访问

B如果 require dirname(__FILE__).'/c.php';    // 则始终引用到跟B在同一个目录中的 c.php文件;
B如果 require dirname(__FILE__).'/../c.php'; // 则始终引用到B文件所在目录的父目录中的 c.php文件;
B如果 require dirname(__FILE__).'/c/c.php';  // 则始终引用到B文件所在目录的c子目录中的 c.php文件;


4. 未确定路径

首先在逐一用include_path中定义的包含目录来拼接[未确定路径],找到存在的文件则包含成功退出,如果没有找到,则用执行require语句的php文件所在目录来拼接[未确定路径]组成的全路径去查找该文件,如果文件存在则包含成功退出,否则表示包含文件不存在,出错。 未确定路径比较容易搞混不建议使用。


5. 解决方案

由于“相对路径”中的“参照目录”是执行入口文件所在目录,“未确定”路径也比较容易混淆,因此最好的解决方法是使用“绝对路径”; 例如b.php的内容如下,无论在哪里require b.php都是以b.php的路径为参照来require c.php的

$dir = dirname(__FILE__);
require($dir . '../c.php');
或者定义一个通用函数 import.php,将其设置为“自动提前引入文件”,在php.ini做如下配置

更改配置项(必须)auto_prepend_file = "C:\xampp\htdocs\auto_prepend_file.php"
更改配置项(可选)allow_url_include = On

import.php内容如下


function import($path) {   
    $old_dir = getcwd();        // 保存原“参照目录”
    chdir(dirname(__FILE__));    // 将“参照目录”更改为当前脚本的绝对路径
    require_once($path);
    chdir($old_dir);            // 改回原“参照目录”
}
这样就可以使用import()函数来require文件了,无论包含多少级“参照目录”都是当前文件
微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点) 第二章 1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根? 8086/8088CPU使用的是20位地址总线,因此可以直接寻址2的20次方个内存单元(即1,048,576),每个单元大小为1字节,因此可以直接寻址2的20次方个字节的内存。 8086/8088CPU有64K个I/O端口,每个端口占用1字节的地址空间,因此可以直接寻址6... 阅读详情

相关推荐

MIMO-OFDM 通信-感知一体化(ISAC)中的联合优化与性能权衡

本文深入探讨了MIMO-OFDM技术在通信-感知一体化(ISAC)系统中的核心作用与挑战。文章分析了如何通过联合优化资源分配、波束成形与波形设计,在有限的频谱与硬件资源下,实现通信速率与感知精度之间的最佳平衡,并指出了工程实践中面临的同步、干扰等关键难题。

dapp9builder的博客 215

require(__DIR__ . "/../sss.php"

魔法函数 __DIR__ 是 php5.2以后新加的函数,返回当前文件所在的目录,返回的目录不带 \,所以上边的意思是:Require当前目录的父目录中的 sss.php 转载于:https://www.cnblogs.com/yangyuqiu/p/5084610.html...

weixin_30692143的博客 525

从2D到3D地图开发:手把手教你用Cesium+Three.js实现卫星轨迹可视化(含代码片段)

本文详细介绍了如何结合Cesium与Three.js实现从2D到3D的卫星轨迹可视化。通过对比传统Web GIS框架的局限,阐述了Cesium处理三维地理与轨道数据、Three.js负责高级图形渲染的分工优势,并提供了从环境搭建、坐标同步到动态粒子效果实现的完整代码实战指南。

nut55的博客 671

Composer用法详解

介绍Composer的原文中,中文翻译一看就是机器翻译的,有很多不通的地方,逐一作了调整

赵健峰的博客 1447

从理论到实践:用CST微波工作室完成单站雷达RCS仿真的完整指南

本文提供了一份利用CST微波工作室进行单站雷达RCS仿真的完整实践指南。文章深入剖析了从求解器选择(重点推荐积分方程法)、模型与材料设置、平面波激励定义到后处理分析的完整逻辑链条,旨在帮助工程师不仅完成仿真,更能理解其背后的物理原理与工程考量,从而高效、精准地评估目标的电磁散射特性。

weixin_29256771的博客 180

四足机械臂避坑指南:从URDF配置到逆运动学控制的完整流程

本文为四足机械臂(Loco-Manipulation)系统开发提供了一份详实的实战避坑指南。文章深入剖析了从URDF模型配置、核心控制循环设计到逆运动学(IK)求解与奖励函数构建的完整流程,重点讲解了如何避免关节命名错误、惯性参数设置不当、IK求解不稳定等常见陷阱,并强调了利用collision_bbox等可视化工具进行高效调试的方法,旨在帮助工程师构建稳定、高效的四足机械臂控制系统。

weixin_42509507的博客 192

php require 执行过程,laravel框架V5.1.11代码执行流程大致阅读笔记

首先是public的文件夹下的index.php作为入口文件通过下面的语句require __DIR__.’/../bootstrap/autoload.php’;去包含了bootstrap/autoload.php文件,跟入这个文件bootstrap/autoload.php通过LARAVEL_START常量,记录一下程序的启动时间通过require __DIR__.’/../vendor/au...

weixin_36246453的博客 462

避坑指南:DeepSeek Function calling流式输出中的常见问题与解决方案

本文深入探讨了在DeepSeek Function Calling中实现流式输出时常见的参数拼接、函数依赖管理和错误处理等核心挑战。针对流式响应中参数碎片化的问题,提供了健壮的参数拼接方案与状态管理策略。同时,文章详细阐述了如何管理函数调用顺序、处理条件性执行,并构建了分阶段的错误处理与重试机制,旨在帮助开发者构建稳定、高效的流式AI应用。

weixin_29062671的博客 203

PHP中require和include路径问题总结

PHP中require和include路径问题总结(转)由于“相对路径”中的“参照目录”是执行入口文件所在目录,“未确定”路径也比较容易混淆,因此最好的解决方法是使用“绝对路径”.方案一:dirname(_file_)例如b.php的内容如下,无论在哪里require b.php都是以b.php的路径为参照来require c.php的$dir = dirname(__FILE__); requir

dongdandan的专栏 2308

拯救者Y9000P 2022双系统实战:Ubuntu22.04分区优化与驱动避坑指南

本文提供联想拯救者Y9000P 2022款安装Ubuntu 22.04双系统的详细实战指南。重点讲解针对该机型的磁盘分区优化方案、NVIDIA显卡驱动安装避坑技巧,以及安装后的网络、时间同步等必备配置,帮助用户高效完成双系统部署并提升使用体验。

weixin_29208327的博客 422

从时序博弈到数据稳定:CS1237驱动中的信号滤波与卡尔曼实践

本文探讨了CS1237高精度ADC驱动在复杂工业环境中的信号处理挑战,重点介绍了一阶滤波与自适应卡尔曼滤波算法的实践应用。通过参数优化和动态调整策略,有效提升了数据稳定性和抗干扰能力,为嵌入式系统在噪声环境下的精密测量提供了可靠解决方案。

rnn9storyteller的博客 862

include php 绝对路径,PHP中include和require绝对路径、相对路径问题

在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件多了之后,就会产生路径问题。 如下目录: web(网站根目录) ├A文件夹 │ │ │ └1.php ├B文件夹 │ │ │ └2.php └index.php 现在根目录下的index.php要包含A文件夹内的在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件...

weixin_39646725的博客 493

企业微信——智能表格学习

企业微信报表

qq_15138049的博客 1万+

PHP 站点相对包含,路径的问题解决方法(include,require)

PHP 站点相对包含,路径的问题解决方法(include,require)

10年职场两茫茫,35岁凄凉奈若何 112

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

PHP中include和require绝对路径、相对路径问题

在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件多了之后,就会产生路径问题。 如下目录: <web>(网站根目录)├<A>文件夹│ ││ └1.php├<B>文件夹│ ││ └2.php└index.php 现在根目录下的index.php要包含A文件夹内的...

dianjuqian8222的博客 456

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP的包含(include,require)文件的路径问题

当使用include或者require等包含文件操作时,若存在多级包含关系,则所有文件路径都是相对最大包含的文件而言的 。 例:存在以下文件结构,class、a.php和c.php同级,b.php在class文件夹下: |-class    |-b.php |-a.php |-c.php a.php需要包含b.php,b.php需要包含c.php,则文件b.php包含c.php时使

淡蓝海的博客 805

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

include php 相对路径_PHP中include和require绝对路径、相对路径问题

在写PHP程序时,经常要用到include或require包含其他文件,但是各文件里包含的文件多了之后,就会产生路径问题。如下目录:(网站根目录)├文件夹│ ││ └1.php├文件夹│ ││ └2.php└index.php现在根目录下的index.php要包含A文件夹内的1.php文件,则用include "./A/1.php"即可而1文件夹内的1.php又包含了B文件夹内的2.php,则1....

weixin_39936310的博客 248

php下include和require的路径问题

include和require区别:先当html编译的,后转换为php模式1、incluce在用到时加载,require在一开始就加载。2、include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了3、require()函数用给定文件的内容取代它本身,这一代替过程发生在PHP引擎编译代码期间,而不是在执行期间进行,它不象include()那样会首先进行计算。requ...

weixin_30502965的博客 109

include php 相对路径_PHP中require和include路径问题总结

1 绝对路径、相对路径和未确定路径相对路径相对路径指以.开头的路径,例如./a/a.php (相对当前目录)../common.inc.php (相对上级目录),绝对路径绝对路径是以 / 开头或者windows下的 C:/ 类似的盘符开头的路径,全路径不用任何参考路径就可以唯一确定文件的最终地址。 例如/apache/wwwroot/site/a/a.phpc:/wwwroot/site/a/a....

weixin_33207144的博客 415
上一篇: PHP面试总结
下一篇: php判断数组元素中是否存在某个字符串的方法
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值