__FILE__、__DIR__区别
__FILE__=D:\Soft\xampp\htdocs\test\test.php
__DIR__=D:\Soft\xampp\htdocs\test
getcwd()=D:\Soft\xampp\htdocs\test
$_SERVER["SCRIPT_FILENAME"]=D:/Soft/xampp/htdocs/test/test.php
现在你有一个folder temp, 里面有 a.php 和 sub folder temp1,temp1 folder里面有 b.php 和 c.php。
路径显示如下:
temp\a.php
\temp1
--> b.php
--> c.php
如果你需要在a.php 引入 b.php文件,你会这么写:
a.php

1 <?php
2 require_once 'temp1/b.php';
3
4 //... Code goes here ...
5
6 ?>

b.php里面引入了 c.php:
b.php
<?php
require_once 'c.php'; // ... Code goes here ...
?>
这时候就出现问题了!a.php 引入 b.php,可是 b.php里有引入 c.php。在这里系统会直接寻找和a.php同个目录的c.php哦!可是目前这个目录只有 a.php一个文件而已,所以某些情况下会发生一些意想不到的事情。
有时候c.php里面的代码会不正常,又或者是 如果当前目录也有 c.php的话,两个不同目录的 c.php会被同时使用 等等。
为了解决这个问题,PHP引入了一个 constant variable 叫做 __DIR__ 。这会获取当前目录的路径,可以保证你要引入的文件是从那个路径来的。
在 b.php的 require_once 'c.php' 改成 require_once __DIR__ . '/c.php' 就能解决之前所说的问题了:

1 <?php
2 require_once __DIR .'/c.php';
3
4 // ... Code goes here ...
5
6 ?>

__FILE__、__DIR__区别的更多相关文章
- os.getcwd()、sys.path[0]、sys.argv[0]和__file__的区别,终于弄清楚了
os.getcwd().sys.path[0].sys.argv[0]和__file__的区别 要分清这几个的区别与使用条件,实际测试一下是最准确的. 设计测试方法: 一个主模块用来运行,一个子模块用 ...
- dirname(__FILE__) === __DIR__
dirname(__FILE__) === __DIR__get_class($this) == __CLASS__
- php -- 取路径:getcwd()、__DIR__、__FILE__ 的区别
getcwd() :显示是 在哪个文件里调用此文件 的目录 __DIR__ :当前内容写在哪个文件就显示这个文件目录 __FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名: <?php echo 'SCRIPT_F ...
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别 有点像static 和 self的意思 !
PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP ...
- PHP dirname() 函数 __FILE__ __DIR__
__DIR__返回文件所处的目录,除非是根目录,否则末尾不带\ __FILE__ 返回文件路径 dirname(__DIR__) 文件所处目录的上级目录,末尾也不带斜杠
- getcwd()和dirname(__FILE__)的区别
我个人理解:getcwd()会随着包含文件的改变而改变,而dirname(__FILE__)不会.即 getcwd() 表示获取当前执行文件的物理路径. 如 getcwd()显示: /www/proj ...
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
$_SERVER['SCRIPT_FILENAME'] -------> 当前执行程序的绝对路径及文件名__FILE__ ...
- php$_SERVER['SCRIPT_NAME']和__FILE__的区别
$_SERVER['SCRIPT_FILENAME'] -------> 当前执行程序的绝对路径及文件名__FILE__ ...
随机推荐
- 在C#中GUID生成的四种格式
var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12 var uuidN = Guid.NewGu ...
- 架构设计---soa与msa的概念(转)
https://blog.csdn.net/qq_15001229/article/details/79535037
- python3.*的一些笔记
因为使用python越来越频繁,有一些细节的东西经常用后一段时间没去用就会忘记,做些简单的笔记吧. 1.break和continue和pass a = 0 while 1: a+=1 if(a%3== ...
- 装饰者模式 Decorator
项目:咖啡计费系统 背景:现有系统中有一个抽象类Beverage,有2个抽象方法GetDescription和Cost. namespace DecoratorPattern { /// <su ...
- linux 查看CPU、内存、磁盘信息命令
[1]查看CPU信息 (1)查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c (2)查看物理CPU个数 cat /pr ...
- Linux基础命令---top显示进程信息
top top指令用来显示Linux的进程信息,这是一个动态显示的过程.top提供运行系统的动态实时视图.它可以显示系统摘要信息以及当前由Linux内核管理的任务列表.所显示的系统摘要信息的类型以及为 ...
- Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
之前项目中使用的的thrift来建模,维护前后台模型以及rest接口,前台使用的是angular2: 但是使用thrift只能生成建模,后台的rest接口的Controller文件还是需要手动去写,一 ...
- Liunx网络技术管理及进程管理
Linux网络技术管理及进程管理(week2_day4) OSI七层模型和TCP/IP四层模型 OSI七层模型:OSI(Open System Interconnection)开放系统互连参考模型 ...
- 【题解】Luogu P5313 僕たちはひとつの光([Ynoi2012]D2T2)
原题传送门 lovelive好评 比赛时只拿到了60pts,还是自己太菜了 这题的思想实际有点像Luogu P3674 小清新人渣的本愿与Luogu P5071 [Ynoi2015]此时此刻的光辉 这 ...
- 汇编笔记-DOSBox安装和使用(转载)
我自己安装使用在Windwos10下面. [DOSBox简介] 1. 官方网址:http://www.dosbox.com/. 2. debug功能在win7之后系统已经不自带了,即64位系统是不能直 ...