include("include_path")函数包含路径详讲__PHP_include()
来源:互联网 发布:留学生 知乎 编辑:程序博客网 时间:2024/05/20 20:43
问题:
在项目开发中,经常需要涉及到 include()函数,其中经常会涉及到嵌套使用include的情况.如何确认include的确切包含路径?下面是针对这个问题的展开.
现在研究根目录的规律问题.
scene:MAC OSX/APACHE/PHP
涉及函数:include
基本:
当前路径: ./
上一级路径: ../
>>>实验一:
寻找include(控制结构)的include_path原理.
A:运行目录与物理目录? Q:如下实验一,针对b.php来说, 运行目录是/htdoc/ 逻辑目录是/htdoc/one/ 因为此实验是是运行a.php文件
假设1:include_path=运行目录
假设2:include_path=物理位置目录
假设3:include-path有优先级,先寻找运行目录,再寻找物理目录,[找到马上返回,只返回一个文件].
假设4:include-path有优先级,先寻找物理目录,再寻找运行目录,[找到马上返回,只返回一个文件].
/htdoc/a.php
<?phpheader("Content-type:text/html;charset=utf-8;");include './one/b.php';?>
>>>
/htdoc/one/b.php
<pre name="code" class="php"><?phpecho '<br />包含./one/b.php成功<br />';include './one/html.php';?>
>>>
/htdoc/one/html.php
<?phpecho '<br />包含/htdoc/one/html.php成功<br />';echo '假设1:include=逻辑运行目录 成立';?>
>>>
/htdoc/one/one/html.php
<?phpecho '<br />包含/htdoc/one/one/html.php成功<br />';echo '假设2:include_path=物理位置目录 成立';?>
>>>实验一结果(运行a.php):
输出
包含./one/b.php成功包含/htdoc/one/html.php成功假设1:include=逻辑运行目录 成立
>>>实验二
保留实验一中的
/htdoc/a.php
/htdoc/one/html.php
/htdoc/one/one/html.php
修改:/htdoc/one/b.php
/htdoc/one/b.php
<pre name="code" class="php"><?phpecho '<br />包含one/b.php成功<br />';include 'one/html.php';?>
>>>实验二结果(运行a.php):
输出
包含./one/b.php成功包含/htdoc/one/html.php成功假设1:include=逻辑运行目录 成立结论:与实验一输出结果一致.
>>>实验三
保留实验二中的
/htdoc/a.php
/htdoc/one/b.php
/htdoc/one/one/html.php
删除:/htdoc/one/html.php>>>实验二结果(运行a.php):
输出
包含./one/b.php成功包含/htdoc/one/one/html.php成功假设2:include_path=物理位置目录 成立
结论:出乎意料,假设2成立.
>>>综合结论:
include被嵌套多层时,include的参数[也就是路径也就是include_path]是有差异的.
A:差异在哪里?
Q:[比较难描述...]举例说明.include_path的值是关键,这个值必定是一个路径.
当最前面为 ./,表示相对当前运行路径来包含文件. //如 include "./one/html.php"; 此时会寻找 /htdoc/one/html.php.
当最前面直接接文件名,include则会查找两个路径(运行路径和物理路径),优先返回运行路径. //如 include "one/html.php"; 此时会寻找/htdoc/one/html.php 和 /htdoc/one/one/html.php. 并且,如果/htdoc/one/html.php存在,则直接返回/htdoc/one/html.php
可以参考PHP手册:
include()寻找包含文件的顺序先是在当前工作目录的相对的 include_path 下寻找,然后是当前运行脚本所在目录相对的 include_path 下寻找。例如 include_path 是 .,当前工作目录是 /www/,脚本中要 include 一个 include/a.php 并且在该文件中有一句 include "b.php",则寻找 b.php 的顺序先是 /www/,然后是 /www/include/。如果文件名以 ./ 或者 ../ 开始,则只在当前工作目录相对的 include_path 下寻找。
好难表达(描述)include的性质.不管你弄没弄明白,反正我是明白了.
- include("include_path")函数包含路径详讲__PHP_include()
- vc包含路径/附加包含路径/include的机制
- include_path
- #include<algorithm>包含的常用函数
- Linux添加头文件路径—INCLUDE_PATH
- 包含文件#include file相对文件路径和#include virtual相对根目录路径的区别
- include 包含
- CCS工程中include文件包含路径配置
- php中require/include 包含相对路径的解决办法
- 【解惑】PHP中include文件包含路径搜索问题
- VC++全局包含文件路径设置( Include 设置)
- CCS工程中include文件包含路径配置
- VS2012全局包含文件路径设置( Include 设置)
- php中include包含页面路径问题解决方法
- 为Visual Studio添加默认INCLUDE包含路径的方法
- C语言学习笔记之 第六讲:头文件源文件以及include包含指令
- PHP包含文件函数include、include_once、require、require_once的使用
- 【#include<algorithm>】中包含的可以直接调用的函数
- velocity模板引挚
- 几种常见取石子模型
- Rendering Problems Exception raised during rendering: action_bar.
- linux命令之mv&cp&ls
- hdu1907 ,2509
- include("include_path")函数包含路径详讲__PHP_include()
- Nodejs学习笔记(二)--- 事件模块
- 『大型网站技术架构:核心原理与案例分析』(三)
- p52 28
- 用nginx做代理服务器上网
- Same Tree
- 『大型网站技术架构:核心原理与案例分析』(四)
- 将一个子串反序输出
- HDU 3308 线段树区间合并