定义

__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. Python中StringIO和BytesIO

    介绍一下Python在内存中读写数据,用到的模块是StringIO和BytesIO StringIO >>> from io import StringIO >>> ...

  2. 常用Common集合

    Log using System; using System.IO; using System.Linq; using System.Text; namespace Common { public c ...

  3. ASP.NET Core 实现用户登录验证的最低配置

    背景是在一个项目中增加临时登录功能,只需验证用户是否登录即可,所需的最低配置与实现代码如下. 在 Startup 的 ConfigureServices() 方法中添加 Authentication ...

  4. sqlServer自动代码提示功能

    第一种方法: 首先确认 自己的sqlServer2008自身的提示功能有没有被屏蔽了! 打开sqlserver2008 -- 工具 -- 选项 -- 文本编辑器 -- 所有语言 --  勾选 语句结束 ...

  5. yum下载rpm包

    方法一:downloadonly插件 1.安装插件 yum -y install yum-download  2.下载httpd软件包到当前文件夹内 yum -y install httpd -dow ...

  6. java mvc spring boot

    spring mvchttp://www.cnblogs.com/wcf6676/p/5333352.html 利用mybatis-generator自动生成代码http://www.cnblogs. ...

  7. [knowledge][ETA] Encrypted Traffic Analytics

    思科ETA主页 https://www.cisco.com/c/en/us/solutions/enterprise-networks/enterprise-network-security/eta. ...

  8. 深谈CDQ分治

    关于CDQ分治我想我自己做过前面的题应该会了这种思想了吧,然后我是真的“会了”. 我想针对于偏序问题我是会了,我现在只会三维偏序了,脑子都是疼的. 但是 CDQ分治最主要的还是基于时间方面的分治思想, ...

  9. hash_map

    点开一道第是自己oj的第440大关,想a了,一直想却无果,学长一句点醒,开始写hash. 关于这道题呢很无语了,两天卡在这上面,而且有些dalao不到20min就a了.我太菜了. 所以要深入讨论这道题 ...

  10. Git 常用命令和统计代码量

    摘要 分享Git日常操作中常用的命令,分享如何统计在项目中贡献的代码量. 下面列出Git bash常用命令. 1. git clone **(项目地址) 克隆一个git项目到本地,将git项目拉取到本 ...