![](/img/trans.png)
[英]Difference between: $_SERVER['SCRIPT_NAME'] and $_SERVER['PHP_SELF']
[英]What's the difference between $_SERVER['PHP_SELF'] and $_SERVER['SCRIPT_NAME']?
我有一個 php 框架,我使用$_SERVER['SCRIPT_NAME']
來優化可移植性。 這樣我就不再需要手動配置路徑了。
$this->base_url = str_replace('index.php', '', 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME']);
但我注意到$_SERVER['SCRIPT_NAME']
和$_SERVER['PHP_SELF']
返回完全相同的字符串。 那么,有什么區別呢? 我應該如何選擇它們?
區別
http://sandbox.phpcode.eu/g/3e38d.php/test
腳本名稱是文件的絕對路徑。
PHP_SELF
是您當前所在的腳本(以及.php
之后的“路徑”)
就像$_SERVER['SERVER_NAME']
和$_SERVER['HTTP_HOST']
http://sandbox.phpcode.eu./g/f5093.php
http://sandbox.phpcode.eu/g/f5093.php
發現一處不同
SCRIPT_NAME
包含當前腳本的路徑。 這對於需要指向自身的頁面很有用。
__FILE__
常量包含當前(即包含的)文件的完整路徑和文件名。
PHP_SELF
當前執行腳本的文件名,相對於文檔根目錄。 例如,地址
http://example.com/test.php/foo.bar
的腳本中的$_SERVER['PHP_SELF']
將是/test.php/foo.bar
。__FILE__
常量包含當前(即包含的)文件的完整路徑和文件名。 如果 PHP 作為命令行處理器運行,則此變量包含自 PHP 4.3.0 以來的腳本名稱。 以前它不可用。
來源php.net
有一件事:
查看http://www.yoursite.com/example/index.php/dir/test
在$_SERVER['PHP_SELF'] == '/example/index.php/dir/test';
在$_SERVER['SCRIPT_NAME'] == '/example/index.php';
ETA:我自己試過
在 localhost http://127.0.0.1:8887/index.php/dir/test上試過這個
echo $_SERVER['PHP_SELF'] . "<br />";
echo $_SERVER['SCRIPT_NAME'];
Output 是:
/index.php/dir/test
/index.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.