由於$ _SERVER ['REQUEST_URI']我的PHP應用程序不能正常工作,因此['REQUEST_URI']將完整的url返回給腳本而不是相對路徑。
我的環境:
Windows 7 64位。
XAMPP版本1.8.2
PHP版本5.4.16
的Apache版本的Apache/2.4.4(Win32的)的OpenSSL/0.9.8y PHP/5.4.16
我的虛擬主機的conf:
<VirtualHost *:80>
DocumentRoot "D:/HTDOCS/ivankristianto"
ServerName www.ivankristianto.local
UseCanonicalName Off
<Directory "D:/HTDOCS/ivankristianto">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all granted
</Directory>
</VirtualHost>
我創建了一個基本的腳本來測試$ _ SERVER內容:
echo '$_SERVER[\'HTTP_HOST\'] : ' . $_SERVER['HTTP_HOST'];
echo '<br/>' . '$_SERVER[\'PHP_SELF\'] : ' . $_SERVER['PHP_SELF'];
echo '<br/>' . '$_SERVER[\'REQUEST_URI\'] : ' . $_SERVER['REQUEST_URI'];
這裏是結果:
// URL: http://localhost/ivankristianto/request.php
$_SERVER['HTTP_HOST'] : localhost
$_SERVER['PHP_SELF'] : /ivankristianto/request.php
$_SERVER['REQUEST_URI'] : /ivankristianto/request.php //This is correct
而
// URL: http://www.ivankristianto.local/request.php
$_SERVER['HTTP_HOST'] : www.ivankristianto.local
$_SERVER['PHP_SELF'] : /request.php
$_SERVER['REQUEST_URI'] : http://www.ivankristianto.local/request.php //This is wrong
我沒有使用任何代理,我所做的只是把它在我的/ etc/hosts中。
我花了好幾個小時才知道爲什麼會發生這種情況,並通過谷歌和本網站進行搜索,但無法找到任何線索。
你能指出我有什麼問題嗎?
謝謝。
伊萬
感謝JohnnyFaldo的回答。但REQUEST_URI不應該返回完整的URL,它應該返回到這樣的:'/request.php'。基於PHP Doc:http://php.net/manual/en/reserved.variables.server.php – Ivan 2014-10-05 09:35:44
這就是它正在做的事情。這就是我的觀點 - 如果您在主機文件中將其更改爲只有'ivankristianto'而沒有www,那麼您會被虛擬主機的'URL'語法搞糊塗。 &.local - 那麼它會顯得不那麼奇怪。這只是一個名稱,指的是它代表的URI在主機文件中設置的實際部分 – JohnnyFaldo 2014-10-05 09:39:35
@Ivan您是否試圖刪除主機文件中的UseCanonicalName行 – JohnnyFaldo 2014-10-05 09:44:14