我正在编写一个网络应用程序,并希望使用$ _SERVER ['SCRIPT_FILENAME']。如果真的有必要,我可以使用更简单但更手动(需要一些小硬编码)的方法来执行该任务。 (几乎)所有或大多数Web服务器中的变量是否始终可用?依靠它是明智的吗?
我问这个是因为过去的某个时候我从某些人那里听说过一些$ _SERVER变量可能没有在相当多的环境/ web服务器/操作系统中设置......我想我已经读过这个了在一些更可靠的消息来源中也是如此。
答案 0 :(得分:1)
我更喜欢__FILE__
,因为它更容易输入和阅读。
对于确定当前脚本文件名的两种方法,PHP都有奇怪的行为。我将其基于此脚本的输出:
var_dump(__FILE__);
var_dump($_SERVER['SCRIPT_FILENAME']);
var_dump(realpath(__FILE__));
var_dump(realpath($_SERVER['SCRIPT_FILENAME']));
PHP 5.6命令行,Windows,Cygwin:
string(40) "/cygdrive/c/file.php"
string(8) "file.php"
string(40) "/cygdrive/c/file.php"
string(40) "/cygdrive/c/file.php"
PHP 5.6命令行,Windows,cmd:
string(31) "C:\file.php"
string(8) "file.php"
string(31) "C:\file.php"
string(31) "C:\file.php"
Apache + PHP 5.6,Windows:
string(31) "C:\file.php"
string(31) "C:/file.php"
string(31) "C:\file.php"
string(31) "C:\file.php"
PHP 5.4命令行,Linux:
string(35) "/var/www/blah/file.php"
string(8) "file.php"
string(35) "/var/www/blah/file.php"
string(35) "/var/www/blah/file.php"
Nginx + PHP 5.4,Linux:
string(35) "/var/www/blah/file.php"
string(35) "/var/www/blah/file.php"
string(35) "/var/www/blah/file.php"
string(35) "/var/www/blah/file.php"
所以你必须根据你的情况看哪一个是最好的。 : - )
答案 1 :(得分:0)
因为我建议__FILE__
如果你使用php自己的Magic constants,你可以确定它可以跨平台工作