- 論壇徽章:
- 0
|
__FILE__ ,
getcwd(),
$_SERVER["REQUEST_URI"],
$_SERVER["SCRIPT_NAME"],
$_SERVER["PHP_SELF"],
$_SERVER["SCRIPT_FILENAME"],
來(lái)觀(guān)察一下這些變量或函數(shù)的異同.
假設(shè)有一個(gè)請(qǐng)求地址為:
http://localhost:8080/test.php/age=20
而test.php 的完整路徑是: D:/server/www/example/test.php
1) getcwd()
將得到瀏覽器請(qǐng)求的頁(yè)面文件所在的目錄. 即test.php 文件所在的目錄: D:/server/www/example/ ,
如果在test.php 執(zhí)行了 require 或 include 語(yǔ)句, 比如 inculde(”test_dir/test2.php”),
那么在 test2.php 里 getcwd()函數(shù) 返回的也將是 test.php 所在的目錄.
2) __FILE__
一個(gè)魔術(shù)變量, 用它將得到 __FILE__ 變量所在文件的完整路徑,
比如: test.php 里 __FILE__ 將得到 D:/server/www/example/test.php ,
test_dir/test2.php 里的 __FILE__ 將得到 D:/server/www/example/test_dir/test2.php
3) $_SERVER["SCRIPT_FILENAME"]
將得到瀏覽器請(qǐng)求的頁(yè)面文件的完整路徑.
test.php 和 test_dir/test2.php 里用 $_SERVER["SCRIPT_NAME"] 都將得到 D:/server/www/example/test.php.
4) $_SERVER["SCRIPT_NAME"]
將得到瀏覽器請(qǐng)求的頁(yè)面文件的文件名,注意: 與 $_SERVER["SCRIPT_NAME"] 不同, 此變量只得到文件名而不包含路徑,
在test.php 與 test_dir/test2.php 用$_SERVER["SCRIPT_NAME"] 得到的都將是 test.php.
當(dāng)然, 在test.php 與 test_dir/test2.php 執(zhí)行 basename($_SERVER["SCRIPT_FILENAME"]) 與 $_SERVER["SCRIPT_NAME"] 相同.
執(zhí)行 在test.php 與 test_dir/test2.php 執(zhí)行 realpath(”test.php”) 得到的結(jié)果與 $_SERVER["SCRIPT_FILENAME"] 相同.
5) $_SERVER["PHP_SELF"]
將得到瀏覽器請(qǐng)求頁(yè)面的文件名, 并剝掉問(wèn)號(hào) ? 后的內(nèi)容, 注意:不包含路徑,
比如在客戶(hù)端里請(qǐng)求
http://localhost:8080/test.php?age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都將得到 “test.php”!癮ge=20&name=Tom”被剝掉。
而如果客戶(hù)端里請(qǐng)求
http://localhost:8080/test.php/age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都將得到 “test.php/age=20&name=Tom”。
6) $_SERVER["REQUEST_URI"]
將得到瀏覽器請(qǐng)求頁(yè)面的文件名, 以及文件名之后的所有內(nèi)容(注意: 井號(hào) # 之后的內(nèi)容將被略去),
比如在客戶(hù)端里請(qǐng)求
http://localhost:8080/test.php?age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REUEST_URI"] 都將得到 “test.php”!癮ge=20&name=Tom”被剝掉。
而如果客戶(hù)端里請(qǐng)求
http://localhost:8080/test.php/age=20&name=Tom
,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REQUEST_URI"] 都將得到 “test.php/age=20&name=Tom”。
*/
// test.php:
echo “test1.php variables
”;
echo “getcwd: “, getcwd(), “
”;
echo “__FILE__: “, __FILE__, “
”;
echo “REQUEST_URI: “, $_SERVER["REQUEST_URI"], “
”;
echo “SCRIPT_NAME: “, $_SERVER["SCRIPT_NAME"], “
”;
echo “PHP_SELF: “, $_SERVER["PHP_SELF"], “
”;
echo “SCRIPT_FILENAME “, $_SERVER["SCRIPT_FILENAME"] , “
”;
// 把 test2.php 包含進(jìn)來(lái), 在 test2.php 里輸出上面的變量,看有什么不同:
include_once(”test2/test2.php”);
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/93245/showart_1900509.html |
|