您好,登錄后才能下訂單哦!
這篇文章主要講解了“php中$_SERVER['SCRIPT_NAME']與$_SERVER['SCRIPT_FILENAME']有什么不同”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php中$_SERVER['SCRIPT_NAME']與$_SERVER['SCRIPT_FILENAME']有什么不同”吧!
在PHP中,有時需要知道腳本所處的位置,這時會用到$_SERVER['SCRIPT_NAME']、$_SERVER['SCRIPT_FILENAME']及__FILE__。那么他們之間有什么不同呢?
1、$_SERVER['SCRIPT_NAME']
先說 $_SERVER['SCRIPT_NAME'] ,它是包含當前運行腳本的路徑,這是從客戶端來看的路徑。假如你訪問的URL地址為 http://www.yourdomain.com/test/test.php,那么在腳本中 $_SERVER['SCRIPT_NAME'] 將會是 /test/test.php 。如果你想引用腳本自身,例如把一個表單提交給自己處理時,這可以用這個。
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get">
2、$_SERVER['SCRIPT_FILENAME']
$_SERVER['SCRIPT_FILENAME'] 也是包含當前運行腳本的路徑,與 $_SERVER['SCRIPT_NAME'] 不同的是,這是服務器端的絕對路徑。假如你訪問的URL地址為 http://www.yourdomain.com/test/test.php,那么在腳本中 $_SERVER['SCRIPT_FILENAME'] 可能會是 /home/a88888888/public_html/test/test.php (前一部分路徑因服務器而異)。說得通俗一點,這就是服務器硬盤上的路徑。
3、__FILE__
__FILE__是包含腳本文件本身的絕對路徑。它與$_SERVER['SCRIPT_FILENAME']有點不同,下面看一個實例。假設a.php包含了b.php。
test/a.php:
<?php include("b.php"); ?>
那 么在b.php中,$_SERVER['SCRIPT_FILENAME']可能會是 /home/a88888888/public_html /test/a.php。雖然$_SERVER['SCRIPT_FILENAME']是在b.php內,但b.php是在a.php內運行的,因此得到 的是a.php的路徑。而在b.php中,__FILE__可能會是 /home/a88888888/public_html/test/b.php, 這是__FILE__所處的真正位置。
另外還有一個$_SERVER['PHP_SELF'],看上去似乎和$_SERVER['SCRIPT_NAME']一樣,不過如果你訪問的URL地址為 http://www.yourdomain.com/test/test.php/foo.bar,那么 $_SERVER['PHP_SELF'] 將會是 /test/test.php/foo.bar。服務器獲取當前文件名時會用到!
來自 http://hi.baidu.com/lovehosejing/item/96af172986fb55929c63d1ec
通常情況下,PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 都會返回 PHP 文件的完整路徑(絕對路徑)與文件名:
<?php echo 'SCRIPT_FILENAME 為:',$_SERVER['SCRIPT_FILENAME']; echo '<br />'; echo '__FILE__ 為:',__FILE__; ?>
上述測試代碼拷貝至 test.php 并訪問該文件(http://127.0.0.1/php/test.php),得到如下結果:
SCRIPT_FILENAME 為:E:/web/html/php/test.php __FILE__ 為:E:\web\html\php\test.php
提示:在 windows 平臺測試,得到結果如上所示可能會出現路徑分隔符的細微差別。
盡管 $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 非常相似,但在文件被 include 或 require 包含的時候,二者還是有細微區別。
將上述測試代碼拷貝至D:\xampp\htdocs\ZZZZ\test\test.php ,然后在剛才的 test.php 文件內包含 inc.php :
<?php include 'common/inc.php'; ?>
這時候再訪問 test.php 文件時,輸出結果:
SCRIPT_FILENAME 為:D:/xampp/htdocs/ZZZZ/test/test.php SCRIPT_NAME 為 "/ZZZZ/test/test.php" PHP_SELF 為 "/ZZZZ/test/test.php" __FILE__ 為:D:\xampp\htdocs\ZZZZ\test\inc.php
可見二者的差別是:$_SERVER['SCRIPT_FILENAME'] 反映的是當前執行程序的絕對路徑及文件名;__FILE__ 反映的是原始文件(被包含文件)的絕對路徑及文件名。
感謝各位的閱讀,以上就是“php中$_SERVER['SCRIPT_NAME']與$_SERVER['SCRIPT_FILENAME']有什么不同”的內容了,經過本文的學習后,相信大家對php中$_SERVER['SCRIPT_NAME']與$_SERVER['SCRIPT_FILENAME']有什么不同這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。