php __FILE__ symlink
定义
__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的更多相关文章
- python __globals__, __file__
Attribute Meaning __doc__ The function's documentationstring, or None ifunavailable; not inherited ...
- #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #endif
情况1:#ifdef _DEBUGvirtual void AssertValid() const; //assert(断言)valid(有效的,正确的)virtual ...
- 获取PHP文件绝对地址$_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别
通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP 文件的完整路径(绝对路径)与文件名: <?php echo 'SCRIPT_F ...
- getcwd()和dirname(__FILE__)的区别
我个人理解:getcwd()会随着包含文件的改变而改变,而dirname(__FILE__)不会.即 getcwd() 表示获取当前执行文件的物理路径. 如 getcwd()显示: /www/proj ...
- PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 的区别 有点像static 和 self的意思 !
PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 通常情况下,PHP $_SERVER['SCRIPT_FILENAME'] 与 __FILE__ 都会返回 PHP ...
- [原]__FILE__宏
在vs中__FILE__宏代表了当前文件,如果有/FC那么__FILE__代表了当前文件的全路径!否则只表示当前文件名 参考 https://msdn.microsoft.com/en-us/li ...
- PHP 的 __FILE__ 常量
今天碰到了PHP的常量__FILE__的问题了. 在网上查了一下.总结了以下规律. dirname(__FILE___) 函数返回的是脚本所在在的路径. 比如文件 b.php 包含如下内容: < ...
- 路径 dirname(__FILE__)
require(dirname(__FILE__).'/include/init.php');
- python __file__ 与相对路径
用__file__ 来获得脚本所在的路径是比较方便的,但这可能得到的是一个相对路径,比如在脚本test.py中写入: #!/usr/bin/env pythonprint __file__ 按相对路径 ...
随机推荐
- .NET Core开发日志——Filter
ASP.NET Core MVC中的Filter作用是在请求处理管道的某些阶段之前或之后可以运行特定的代码. Filter特性在之前的ASP.NET MVC中已经出现,但过去只有Authorizati ...
- HDU5988/nowcoder 207G - Coding Contest - [最小费用最大流]
题目链接:https://www.nowcoder.com/acm/contest/207/G 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5988 ...
- httpclient发送接受请求
需要注意三部分,request和参数的处理,响应数据.与请求相关的dll是System.Net. 核心代码: private string Post(string requestUrlString, ...
- Usage of git
目录 Git 配置 查看配置信息 基本概念 Git 创建仓库 git init git clone 撤销操作 从暂存区恢复文件 从仓库恢复某个文件 版本退回 版本前进 分支操作 删除未跟踪的文件 连 ...
- PHP进阶-浏览器到PHP发展历史
从浏览器到PHP发展历史 php-cgi实现cgi的解析器,每个fork过程都开启一个进程,并会进行一个关闭进程的操作. 长注内存解释器(一个进程) fastcgi 多进程共享一个端口是一个问题,多进 ...
- omitting directory何意
使用cp命令拷贝目录时,若该目录下有子目录 需加参数 cp -r 加目标目录到路径下
- LeetCode 908 Smallest Range I 解题报告
题目要求 Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K ...
- 《HTTP - https》
一:HTTP 缺点? - 明文通讯(也是最受诟病的一个缺点) - 不验证对方的身份(你说你是你?你怎么证明你是你呢?) - 无法验证报文的完整性,可能已经被篡改(在挨打的边缘,来回试探) 二:HTTP ...
- C++ Reflection Library
C++ Reflection Library https://www.rttr.orghttps://github.com/rttrorg/rttr
- javascript替代Array.prototype.some操作
Array.prototype.some在低版本浏览器好像不太兼容,下列是替代方法 一. for 循环 const initIds: any[] = [1,2,3]; const Ids: any[] ...