什么';美元服务器[';PHP#u SELF';]和美元服务器[';SCRIPT#u NAME';]之间的区别是什么?
我有一个php框架,我使用什么';美元服务器[';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']返回完全相同的字符串。那么,有什么
$\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