Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';美元服务器[';PHP#u SELF';]和美元服务器[';SCRIPT#u NAME';]之间的区别是什么?_Php_Apache - Fatal编程技术网

什么';美元服务器[';PHP#u SELF';]和美元服务器[';SCRIPT#u NAME';]之间的区别是什么?

什么';美元服务器[';PHP#u SELF';]和美元服务器[';SCRIPT#u NAME';]之间的区别是什么?,php,apache,Php,Apache,我有一个php框架,我使用$\u SERVER['SCRIPT\u NAME']来优化可移植性。这样我就不需要再手动配置路径了 $this->base_url = str_replace('index.php', '', 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']); 但是我注意到$\u SERVER['SCRIPT\u NAME']和$\u SERVER['PHP\u SELF']返回完全相同的字符串。那么,有什么

我有一个php框架,我使用
$\u SERVER['SCRIPT\u NAME']
来优化可移植性。这样我就不需要再手动配置路径了

$this->base_url = str_replace('index.php', '', 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
但是我注意到
$\u SERVER['SCRIPT\u NAME']
$\u SERVER['PHP\u SELF']
返回完全相同的字符串。那么,有什么区别呢?我应该如何在两者之间做出选择

SCRIPT_NAME
包含当前脚本的路径。这对于需要指向自身的页面非常有用。
\uuu FILE\uu
常量包含当前(即包含的)文件的完整路径和文件名

当前执行脚本的文件名,相对于文档根。例如,
$\u服务器['PHP\u SELF']
位于
http://example.com/test.php/foo.bar
将是
/test.php/foo.bar
\uuu FILE\uu
常量包含当前(即包含的)文件的完整路径和文件名。如果PHP作为命令行处理器运行,则此变量包含自PHP4.3.0以来的脚本名称。以前没有

来源

有一件事:

签出
http://www.yoursite.com/example/index.php/dir/test

$\u服务器['PHP\u SELF']='/example/index.PHP/dir/test'中

$\u服务器['SCRIPT\u NAME']='/example/index.php'中

预计到达时间: 我试过了

在本地主机上尝试了这个

差别

http://sandbox.phpcode.eu/g/3e38d.php/test

脚本名是文件的绝对路径

PHP\u SELF
是您当前所在的脚本(以及
.PHP
后面的“路径”)

它就像
$\u服务器['SERVER\u NAME']
$\u服务器['HTTP\u主机]]

http://sandbox.phpcode.eu./g/f5093.php

http://sandbox.phpcode.eu/g/f5093.php

请注意,这里的示例排除了文件名
index.php
,以及它与服务器名之间的内容。在@genesis link中,它正确地返回
/g/3e38d.php/test
,而不是只返回
/test
。同意,它拥有所有目录内容+脚本本身。现在它是正确的。请注意,链接“示例”也显示了同样的错误示例:p该手册不仅仅是自解释的,但是您的脚本可能会受到许多因素的限制,web主机可能已将您的环境设置为这样一种方式,您可能无法看到scriptname index的实际文件系统路径,顺便说一句,我宁愿使用RTFM,接下来是谷歌搜索,你可以通过自己做来了解更多:-)在问这个问题之前,我读了很多遍。否则我不会在这里问。请不要对我的评论感到生气,我只是补充了手册上的内容,很高兴看到你得到了答案,我更像是一个自己动手的人,我知道我的答案大多是以我所说的方式。但这是一个特定的问题,在谷歌上不容易找到。但是你是怎么说网络主机的问题的?根据服务器配置,$\u服务器变量会有什么不同?不是PHP本身,可能是脚本名,现在我自己陷入了困境,稍后我将使用
chroot
-ed环境检查这一点,这实际上非常有用(:“脚本名是文件的绝对路径。”-
SCRIPT\u NAME
是根相对的,而不是绝对的。
SCRIPT\u FILENAME
包含一个绝对路径(尽管它不一定与
SCRIPT\u NAME
相同)。
/index.php/dir/test 
/index.php
http://sandbox.phpcode.eu/g/3e38d.php/test
http://sandbox.phpcode.eu./g/f5093.php

http://sandbox.phpcode.eu/g/f5093.php