定义

__FILE__

是一个魔法变量(预定义常量),当前运行文件的完整路径(真是文件路径,非软链路径)和文件名。如果用在被包含文件中,则返回被包含的文件名。

官方解释:

 __FILE__  文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

由于软链接路径导致问题case 参考:

PHP魔术常量__FILE__无法识别符号链接问题解决 :http://www.kaijia.me/2012/08/linux-apache-use-symlink-and-permission-issue-solved/

How do you get PHP, Symlinks and __FILE__ to work together nicely? :http://stackoverflow.com/questions/3221771/how-do-you-get-php-symlinks-and-file-to-work-together-nicely

示例

环境:

apache 根目录:/usr/local/apache/htdocs

在/usr/local/apache/htdocs  下

有文件夹

test

软链接

symbol   -> test

在test目录下有文件file.php

<?php
echo __FILE__."\n";
echo dirname(__FILE__)."\n"; print_r($_SERVER);

浏览器运行:http://192.168.44.129/symbol/file.php

返回:

/usr/local/services/httpd-2.2./htdocs/test/file.php
/usr/local/services/httpd-2.2./htdocs/test
Array
(
[HTTP_HOST] => 192.168.44.129
[HTTP_CONNECTION] => keep-alive
[HTTP_CACHE_CONTROL] => max-age=
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36
[HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
[HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
[PATH] => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/php/bin:/root/bin
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.1h PHP/5.3.28
[SERVER_NAME] => 192.168.44.129
[SERVER_ADDR] => 192.168.44.129
[SERVER_PORT] => 80
[REMOTE_ADDR] => 192.168.44.1
[DOCUMENT_ROOT] => /usr/local/services/httpd-2.2.21/htdocs
[SERVER_ADMIN] => you@example.com
[SCRIPT_FILENAME] => /usr/local/services/httpd-2.2.21/htdocs/symbol/file.php
[REMOTE_PORT] => 59738
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /symbol/file.php
[SCRIPT_NAME] => /symbol/file.php
[PHP_SELF] => /symbol/file.php
[REQUEST_TIME] => 1422894434
)

结论:

__FILE__ 获取到的是文件的绝对路径,如果是符号链接则是解析后的绝对路径

$_SERVER['SCRIPT_FILENAME'] 获取当前执行脚本的绝对路径,不解析符号链接

php __FILE__ symlink的更多相关文章

  1. python __globals__, __file__

    Attribute Meaning   __doc__ The function's documentationstring, or None ifunavailable; not inherited ...

  2. #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif

    情况1:#ifdef _DEBUGvirtual void AssertValid() const;                 //assert(断言)valid(有效的,正确的)virtual ...

  3. 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别

    通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名: <?php echo 'SCRIPT_F ...

  4. getcwd()和dirname(__FILE__)的区别

    我个人理解:getcwd()会随着包含文件的改变而改变,而dirname(__FILE__)不会.即 getcwd() 表示获取当前执行文件的物理路径. 如 getcwd()显示: /www/proj ...

  5. PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别 有点像static 和 self的意思 !

    PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP ...

  6. [原]__FILE__宏

    在vs中__FILE__宏代表了当前文件,如果有/FC那么__FILE__代表了当前文件的全路径!否则只表示当前文件名   参考 https://msdn.microsoft.com/en-us/li ...

  7. PHP 的 __FILE__ 常量

    今天碰到了PHP的常量__FILE__的问题了. 在网上查了一下.总结了以下规律. dirname(__FILE___) 函数返回的是脚本所在在的路径. 比如文件 b.php 包含如下内容: < ...

  8. 路径 dirname(__FILE__)

    require(dirname(__FILE__).'/include/init.php');

  9. python __file__ 与相对路径

    用__file__ 来获得脚本所在的路径是比较方便的,但这可能得到的是一个相对路径,比如在脚本test.py中写入: #!/usr/bin/env pythonprint __file__ 按相对路径 ...

随机推荐

  1. 堆的C语言实现

    在C++中,可以通过std::priority_queue来使用堆. 堆的C语言实现: heap.c /** @file heap.c * @brief 堆,默认为小根堆,即堆顶为最小. */ #in ...

  2. mysql命令大全用户管理相关命令

        1.登陆 mysql>mysql -uJDev -p 2.用户管理 mysql>use mysql; 3.查看有哪些登陆用户 mysql> select host,user, ...

  3. linux shutdown命令以及参数详解

    在说shutdown命令之前 先说一下sync命令: sync:将内存中尚未写入硬盘的数据写入硬盘 因为linux为了保证数据读写速度,把常用的数据放在内存中,不会立即写入硬盘,如果有不当关机,这些数 ...

  4. HDU 5985/nowcoder 207D - Lucky Coins - [概率题]

    题目链接:https://www.nowcoder.com/acm/contest/207/D 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5985 ...

  5. 给AFNetworking添加请求缓存功能实现在没有网络的情况下返回缓存数据

    原理:先给NSURLSession地Configuration设置一个内存和本地代理,原来的网络请求结束后会查找缓存的代理字典,并执行代理对象对应的操作方法,需要做的就是拦截错误的方法,返回缓存的数据 ...

  6. zabbix zatree centos7安装zabbix-agent

    https://github.com/Emersonxuelinux/zatree-3.0-/tree/master/zabbix-3.0.x /bin/sh /config/ds.sh /tmp/z ...

  7. iOS之分类(category)

    1.分类(category)的作用 1.1作用:可以在不修改原来类的基础上,为一个类扩展方法.1.2最主要的用法:给系统自带的类扩展方法. 2.分类中能写点啥? 2.1分类中只能添加“方法”,不能增加 ...

  8. isprime_判断质数

    判断质数的方法有很多,首先是最简单的试除法,判断n以内的质数的话时间复杂度为n*sqrt(n)当然是很慢的了 下面提供三种判断质数的方法: 首先是跑5051ms的这个是埃拉托斯特尼筛法 且不加优化 核 ...

  9. scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?

    css的预编译: 使用步骤: 第一步:用npm下三个loader(sass-loader.css-loader.node-sass): 第二步:在build目录找到webpack.base.confi ...

  10. SQL SERVER BCP的用法

    转自:https://www.cnblogs.com/fishparadise/p/4809014.html 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储 ...