Home >Backend Development >PHP Tutorial >require_once一个奇怪的现象,大家看下

require_once一个奇怪的现象,大家看下

WBOY
WBOYOriginal
2016-06-23 13:38:29961browse

本人在根目录的文件 require_once("test/1.php");  然后在1.php  require_once("2.php");
情况1、如果我我根目录存在2.php 程序会去引用根目录的2.php
情况2、如果我根目录不存在2.php ,程序还会去引用test目录的2.php 
不知道为什么会出现情况2的情况,大家有碰到吗,这是什么原因呢?
require_once 的时候不是以最开始的页面路径为主吗?



回复讨论(解决方案)

不可能的,除非你改过include_path 的值。

http://www.iloveweb.com.cn/test.rar


这是测试文件,有兴趣的可以看下,给点意见,小弟也被弄晕了

如果感觉用相对路径比较晕的话,那就尝试用绝对路径,like: dirname(__FILE__)."/test/1.php" 

include(include_once、require、require_once)以执行的文件为基准
按 include_path 指示的路径查找文件
一般为 include_path = ".:/path1:/path2"(UNIX)或 include_path = ".;\path1;\path2"(WINDOW)
即以 .、/path1、/path2 .... 的顺序查找

所以查找的顺序是:被执行程序所在目录,被包含文件所在目录,其他 include_path 指定的目录

这样设计的好处在于:你可以改变原始项目的一些行为,而不必修改原始项目

index.php(require_once("test/1.php");)
test/1.php(require_once("2.php");)
test/2.php
2.php (这个 2.php 将替代 test/2.php)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn