我的公司使用一塊基於PHP的軟件,該軟件取決於$_SERVER['SERVER_NAME']
來構建URL。它在Windows Server 2003或2008上通過FastCGI與IIS6或IIS7在PHP 5.2上運行。
在我們安裝過的每個IIS系統上,它都能「正確」(或者至少,我們期望它能夠工作)。換句話說,在同一臺服務器上,如果你有http://app.foo.com/myscript.php調用它,$_SERVER['SERVER_NAME']
是「app.foo.com」,如果你有http://192.168.1.22/myscript.php
調用它,$_SERVER['SERVER_NAME']
是「192.168.1.22」等
今天,我們有史以來第一次將它安裝在服務器(Windows Server 2003和IIS6)上,這種服務器的行爲不同。無論我們使用哪個URL來加載腳本,$ _SERVER ['SERVER_NAME']都是'myserver'(服務器的機器名),這會導致問題。
現在這個問題出現了,我們正在努力消除在未來的軟件版本中使用$_SERVER['SERVER_NAME']
...但是有沒有我可以執行的任何配置(在IIS6中,php.ini,... ?)在此服務器上解決此問題?如果我們無法對其進行更改以使$_SERVER['SERVER_NAME']
始終包含來自請求URL的主機,是否至少有某種方式來配置它,以便$_SERVER['SERVER_NAME']
將包含特定的所需FQDN('app.foo.com'而不是'myserver' )?
編輯:添加一個賞金,因爲我非常有興趣接收這個問題的答案。
你可以看看`$ _SERVER [「HTTP_HOST」]``**客戶端設置的大**警告,可以自由篡改。也許如果你有一個有效的主機陣列(如果這不會影響你正在做的事情的目的)...... – 2011-02-16 18:24:10
當前腳本正在執行的服務器主機的名稱。如果腳本在虛擬主機上運行,則這將是爲該虛擬主機定義的值。您可能需要修改您的IIS虛擬主機設置 – ajreal 2011-02-16 18:35:33
不知道IIS,但在Apache上,$ _SERVER ['SERVER_NAME']是在該虛擬主機的「ServerName」httpd.conf選項中設置的值。 IIS必須具有類似的設置虛擬主機的實際名稱。 – 2011-02-16 18:36:38