本文目錄一覽:
- 1、php 伺服器變數$_SERVER 伺服器環境變數 $_ENV
- 2、如何在IIS中配置PHP運行環境
- 3、自己伺服器上用iis作為伺服器環境配置php
- 4、配置php開發環境,用Iis還是Apche?
- 5、在IIS下,為什麼安裝php要在環境變數中加入php路徑,有什麼作用,為什麼我沒有加入也可以使用?
- 6、iis配置php
php 伺服器變數$_SERVER 伺服器環境變數 $_ENV
PHP $_SERVER 變數
$_SERVER 是一個包含諸如頭信息(header)、路徑(path)和腳本位置(script locations)的數組。它是 PHP 中一個超級全局變數,我們可以在 PHP 程序的任何地方直接訪問它。
$_SERVER 包含著眾多的信息,你可以嘗試直接列印它:
print_r($_SERVER);
$_SERVER 數組元素
更多情況下,我們只需要 $_SERVER 數組中的某些元素(數組單元)。$_SERVER 數組包含的元素如下:
頁面程序相關
$_SERVER[『PHP_SELF』]:相對於網站根目錄的路徑及 PHP 程序名稱,與 document root 相關。
$_SERVER[『HTTP_REFERER』]:鏈接到當前頁面的前一頁面的 URL 地址。
$_SERVER[『SCRIPT_NAME』]:相對於網站根目錄的路徑及 PHP 程序文件名稱 。
$_SERVER[『REQUEST_URI』]:訪問此頁面所需的 URI 。
$_SERVER[『SCRIPT_FILENAME』]:當前運行 PHP 程序的絕對路徑及文件名。
$_SERVER[『PATH_TRANSLATED』]:當前 PHP 程序所在文件系統(不是文檔根目錄)的基本路徑。
$_SERVER[『QUERY_STRING』]:查詢(query)的字元串(URL 中第一個問號 ? 之後的內容但不包括 # 後面的內容)。
$_SERVER[『argv』]:傳遞給當前 PHP 程序的參數。
$_SERVER[『argc』]:命令行模式下,包含傳遞給程序的命令行參數的個數。
$_SERVER[『REQUEST_TIME』]:請求開始時的時間戳,從 PHP 5.1.0 起有效。
$_SERVER[『REQUEST_METHOD』]:訪問頁面時的請求方法,例如:「GET」、「HEAD」,「POST」或「PUT」。
$_SERVER[『HTTP_ACCEPT』]:當前請求的 Accept: 頭信息的內容。
$_SERVER[『HTTP_ACCEPT_CHARSET』]:當前請求的 Accept-Charset: 頭信息的內容。例如:「iso-8859-1,*,utf-8」。
$_SERVER[『HTTP_ACCEPT_ENCODING』]:當前請求的 Accept-Encoding: 頭信息的內容。例如:「gzip」。
$_SERVER[『HTTP_ACCEPT_LANGUAGE』]:當前請求的 Accept-Language: 頭信息的內容。例如:「zh-cn」。
$_SERVER[『HTTP_CONNECTION』]:當前請求的 Connection: 頭信息的內容。例如:「Keep-Alive」。
$_SERVER[『HTTP_HOST』]:當前請求的 Host: 頭信息的內容。
$_SERVER[『HTTPS』]:如果 PHP 程序是通過 HTTPS 協議被訪問,則被設為一個非空的值。
$_SERVER[『PHP_AUTH_DIGEST』]:當作為 Apache 模塊運行時,進行 HTTP Digest 認證的過程中,此變數被設置成客戶端發送的「Authorization」HTTP 頭內容(以便作進一步的認證操作)。
$_SERVER[『PHP_AUTH_USER』]:當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的用戶名。
$_SERVER[『PHP_AUTH_PW』]:當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是用戶輸入的密碼。
$_SERVER[『AUTH_TYPE』]:當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變數便是認證的類型。
伺服器端相關
$_SERVER[『DOCUMENT_ROOT』]:當前運行 PHP 程序所在的文檔根目錄,在伺服器配置文件中定義。
$_SERVER[『GATEWAY_INTERFACE』]:伺服器使用的 CGI 規範的版本,例如:「CGI/1.1」。
$_SERVER[『SERVER_ADDR』]:當前運行 PHP 程序所在的伺服器的 IP 地址。
$_SERVER[『SERVER_NAME』]:當前運行 PHP 程序所在的伺服器的名稱。
$_SERVER[『SERVER_ADMIN』]:Apache 伺服器配置文件中的 SERVER_ADMIN 參數。
$_SERVER[『SERVER_PORT』]:伺服器所使用的埠。如果使用 SSL 安全連接,則這個值為用戶設置的 HTTP 埠。
$_SERVER[『SERVER_SIGNATURE』]:包含伺服器版本和虛擬主機名的字元串。
$_SERVER[『SERVER_SOFTWARE』]:伺服器標識的字串,在響應請求時的頭信息中給出。
$_SERVER[『SERVER_PROTOCOL』]:請求頁面時通信協議的名稱和版本,例如:「HTTP/1.0」。
其他雜項
$_SERVER[『HTTP_USER_AGENT』]:當前請求的 User-Agent: 頭信息的內容,該字元串表明了訪問該頁面的用戶代理的信息。
$_SERVER[『REMOTE_ADDR』]:正在瀏覽當前頁面用戶的 IP 地址。
$_SERVER[『REMOTE_HOST』]:正在瀏覽當前頁面用戶的主機名。
$_SERVER[『REMOTE_PORT』]:用戶連接到伺服器時所使用的埠。
注意,如果以命令行方式運行 PHP,上面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。
PHP $_ENV 變數
$_ENV 是一個包含伺服器端環境變數的數組。它是 PHP 中一個超級全局變數,我們可以在 PHP 程序的任何地方直接訪問它。
$_ENV 只是被動的接受伺服器端的環境變數並把它們轉換為數組元素,你可以嘗試直接列印它:
print_r($_ENV);
限於篇幅,在此不再列出列印的結果,且不同的伺服器上,列印出的結果可能是完全不同的。
$_ENV 數組元素
$_ENV 數組中的元素(數組單元)隨伺服器環境不同而有較大差異,所以無法像 $_SERVER 那樣列出完整的列表。以下是 $_ENV 數組包含的比較通用的元素:
$_SERVER[『PATH』]:環境變數 PATH 路徑。
$_SERVER[『CLASSPATH』]:系統 CLASSPATH 路徑。
$_SERVER[『LIB』]:系統 LIB 庫路徑。
$_SERVER[『INCLUDE』]:系統 Include 路徑,注意與 PHP 的包含路徑是不一樣的。
$_SERVER[『OS』]:操作系統類型。
$_SERVER[『LANG』]:系統語言,如 en_US 或 zh_CN。
$_SERVER[『PWD』]:當前工作目錄。
$_SERVER[『TEMP』]:系統 TEMP 路徑。
$_SERVER[『AP_PARENT_PID』]:當前進程 ID 號。
$_SERVER[『NUMBER_OF_PROCESSORS』]:系統 CPU 數目。
$_ENV 為空的原因及解決辦法
如果列印輸出 $_ENV 為空,可以檢查一下 php.ini 的配置:
variables_order = “EGPCS”
上述配置表示 PHP 接受的外部變數來源及順序,EGPCS 是 Environment、Get、Post、Cookies 和 Server 的縮寫。如果 variables_order 的配置中缺少 E ,則 PHP 無法接受環境變數,那麼 $_ENV 也就為空了。
如何在IIS中配置PHP運行環境
這是我的配置經驗筆記
安裝php(環境變數篇)
設置環境變數後,無須拷文件到系統盤
1.把php-5.2.0-win32.zip解壓到e:\php_server\php目錄
2.把e:\php_server\php目錄下的php.ini-dist文件改名為php.ini
作如下修改:
查找extension_dir
=
“./”,該處是指定php動態鏈接庫的路徑,
改為extension_dir
=
“e:/php_server/php/ext”,注意是「/」。
查找extension=php_mbstring.dll,把前面的分號去掉。
這個不去的話用phpmyadmin會出現紅色提示。
查找extension=php_gd2.dll,去掉前面的分號,支持gd庫用的。
查找extension=php_sockets.dll,去掉前面的分號。
查找extension=php_mysql.dll,去掉前面的分號,支持mysql資料庫用的。
3.現在我們通過設置環境變數把php.ini文件位置定在e:\php_server\php目錄下,
打開系統屬性-環境變數-系統環境變數-新建,變數名:phprc,變數值:e:\php_server\php,
更改系統環境變數,編輯path變數,
在最後加上:;e:\php_server\php,注意是「\」。
(重啟伺服器..)
配置iis支持php
1.在web服務擴展中
「添加一個新的web伺服器擴展」
.php
e:\php_server\php\php5isapi.dll
允許
2.網站屬性-isapi篩選器
–
添加
php
e:\php_server\php\php5isapi.dll
3.網站屬性-主目錄-配置-添加映射-可執行e:\php_server\php\php5isapi.dll
.php
4.網站屬性-文檔-添加index.php
5、重啟iis先點擊開始菜單選擇「運行」依次輸入cmd回車
net
stop
w3svc 回車
net
stop
iisadmin回車
net
start
w3svc 回車
自己伺服器上用iis作為伺服器環境配置php
1.按你上面的情況來看,不一定;
2.IP+PHP網站埠可以訪問,很有可能是APACHE在起作用;
3.你得把PHP文件解析的動態服務和執行文件指向IIS;
4.我們常用的IIS和PHP配置有如下3種
我們知道php配置有幾種:
第一種、CGI方式載入PHP環境,通常就是IIS裡面配置解釋器為php.exe,早期比較常見,目前使用較少。
特點是:穩定,但效率太低。
第二種、ISAPI方式載入PHP環境,通常就是IIS裡面配置解釋器為php5isapi.dll,目前使用最多,應用最廣。
特點是:多線程,效率較高,但不夠穩定。
第三種、FastCGI方式載入PHP環境,在IIS環境里並不常見,但其它系統環境應用還是有的,不過IIS7.0開始內置FastCGI了。
特點是:高效率,高穩定性,屬於將來發展趨勢。
我試過其他的特別麻煩,PHP
5.3發布的Windows版已經不支持ISAPI模式了,所以我打算按微軟推薦的FastCGI方式運行PHP。
我用的就第三種,也是最好最快的,因為FastCGI大大加強了IIS處理PHP的能力,能迅速提高PHP站點的反應速度和生產力,
並具有更高的穩定性和安全性.
配置php開發環境,用Iis還是Apche?
一,在apache中php以模塊的方式與apache結合的即PHPIniDir “E:\phpsite\php”(這部是設置php.ini的位置) LoadModule php5_module “E:/phpsite/php/php5apache2_2.dll”
二,在用IIS整合php時,有兩種方式:ISAPI(.exe可執行文件【php.exe,php-cgi.exe】)與CGI(.dll動態鏈接庫)模式,這兩種方式,我們都可以看到phpinfo頁面,但是使用ISAPI模式,無法讀取環境變數,所以通過環境變數PHPRC設置的php.ini路徑無法找到。使用CGI就可以,這樣就不必把好多文件拷到系統文件下。
三,配置文件(PHP 3 中是 php3.ini,自 PHP 4 起是 php.ini)在 PHP 啟動時被讀取。對於伺服器模塊版本的 PHP,僅在 web 伺服器啟動時讀取一次。對於 CGI 和 CLI 版本,每次調用都會讀取。
php.ini 的搜索路徑如下(按順序):
* SAPI 模塊所指定的位置(Apache 2 中的 PHPIniDir 指令,CGI 和 CLI 中的 -c 命令 行選項,NSAPI 中的 php_ini 參數,THTTPD 中的 PHP_INI_PATH 環境變數)
*HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath(Windows 註冊表位置)
*PHPRC 環境變數
*當前工作目錄(對於 CLI)
*web 伺服器目錄(對於 SAPI 模塊)或 PHP 所在目錄(Windows 下其它情況)
*Windows 目錄(C:\windows 或 C:\winnt),或 –with-config-file-path 編譯時選項指定的位置
我在Server2003+php4的環境下遇見了這個問題,解決的方法是在前面寫PATH環境變數的時候,添加一個PHPRC,指向x:\php4\php.ini,重新啟動即可,如果實在還是不行的,最後還有一招就是安裝zend,php加速器,因為安裝zend的時候,會指定php.ini的路徑,也會指定所使用的伺服器是IIS還是Apache,起本質是對註冊表做了修改,但是我不知道修改了哪個位置,所以我在上面的操作還是無效的情況下,最後安裝Zend,終於成功解決問題了。
四,IIS下PHP的ISAPI和FastCGI比較 (2009-8-2)
1、CGI(通用網關介面/Common Gateway Interface)一般是可執行程序,例如EXE文件,和WEB伺服器各自佔據著不同的進程,而且一般一個CGI程序只能處理一個用戶請求。這樣,當用 戶請求數量非常多時,會大量佔用系統的資源,如內存、CPU時間等,造成效能低下。
2、ISAPI(Internet Server Application Program Interface)是微軟提供的一套面向WEB服務的API介面,它能實現CGI提供的全部功能,並在此基礎上進行了擴展,如提供了過濾器應用程序接 口。ISAPI應用大多數以DLL動態庫的形式使用,可以在被用戶請求後執行,,在處理完一個用戶請求後不會馬上消失,而是繼續駐留在內存中等待處理別的 用戶輸入。此外,ISAPI的DLL應用程序和WEB伺服器處於同一個進程中,效率要顯著高於CGI。
3、FastCGI是可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。傳統的CGI解釋器的反覆載入 是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性等。
以 ISAPI 模式運行 PHP 的,這種方式最大的缺點就是穩定性不好,當 PHP 出錯的時候,Apache進程也死掉了
FastCGI 模式運行 PHP 的優點:
以 FastCGI 模式運行 PHP 有幾個主要的好處。首先就是 PHP 出錯的時候不會搞垮 Apache,
只是 PHP 自己的進程當掉(但 FastCGI 會立即重新啟動一個新 PHP 進程來代替當掉的進程)。
其次 FastCGI 模式運行 PHP 比 ISAPI 模式性能更好
最後,就是可以同時運行 PHP5 和 PHP4
FastCGI 模式的一些缺點:
說完了好處,也來說說缺點。用 FastCGI 模式更適合生產環境的伺服器。
但對於開發用機器來說就不太合適。因為當使用 Zend Studio 調試程序時,
由於 FastCGI 會認為 PHP 進程超時,從而在頁面返回 500 錯誤
在IIS下,為什麼安裝php要在環境變數中加入php路徑,有什麼作用,為什麼我沒有加入也可以使用?
一、加入「環境變數」主要還是為了盡量找到所需文件。
從這個意義來說,環境變數範圍越廣越好,最好包括全盤,但這樣一來命中率肯定下降!
所以又希望搜索範圍越小越好(只要能找到文件就夠了)。
二、「php路徑」可以不加入「環境變數」,我就這樣做的。
當系統調用命令時優先搜索「當前目錄」,如果當前目錄也沒有就會按照環境變數里的設置進行搜索,如果還是找不到,就會顯示「既不是內部命令也不是外部命令」。
通過觀察?php echo phpinfo(); ?的輸出,以及經驗,初步得出,為了正確調用,只需滿足其中之一:
1、要麼把php.ini拷貝一份放到%windir%里(在php.ini文件設置正確);
2、或者把php路徑加入「環境變數」。
—–本人的php安裝目錄是D:\php5—
如本人做了一個批處理「copy.CMD」,放在D:\php5里,內容如下:
rem 重要:有時候D:\php5下面的php.ini改了,但%windir%下面的php.ini並沒有改!最好統一
rem 也可以不拷貝,直接把D:\php5;d:\php5\ext添加到「環境變數」「path」里
copy php.ini %windir%
pause
iis配置php
雖然 LAMP 組合很不錯,但是如果想要架設一台同時支持PHP、ASP、ASP.NET、JSP、Perl的Web虛擬主機伺服器,還是用 Windows 2003的IIS 6最好。網上有很多介紹在IIS 6上配置PHP的文章,但是那些方法不是性能不好,就是升級麻煩。下面的方法可以讓你在第一次配置好後,能夠非常方便的進行升級。
這裡所說的升級,是指從某個php4版本升級到另一個php4版本,或者從某個php5版本升級到另一個php5版本,而不是指從php4升級到php5。
準備:
1、一台安裝好的 Windows 2003 伺服器,並且已經安裝了 IIS 6。
2、下載 windows 版的 PHP 二進位壓縮包
安裝:
解壓縮 PHP 二進位壓縮包到 C:\php 目錄下(這裡假設 C: 盤是系統盤,即安裝了Windows 系統的盤,如果系統盤是 D: 盤,則解壓縮到 D:\php 目錄下,以此類推,下同)。
然後打開「我的電腦」-「屬性」-「高級」-「環境變數」-「系統變數」-「path」,編輯其值,在前面增加下面的路徑地址:
C:\php;C:\php\dlls;C:\php\extensions;C:\php\sapi;
將 php.ini-dist 或 php.ini-recommended 複製到 C:\Windows 目錄下,並改名為 php.ini,一般正式發布網站的伺服器用 php.ini-dist,而作為調試用的伺服器用 php.ini-recommended 更好。當然一般情況下,這個 php.ini 還是需要根據實際情況來修改的。
下面來介紹一下幾個必要的修改選項:
extension_dir = “C:\php\extensions”
這個是 PHP 擴展所放置的目錄,請確保跟你實際安裝的目錄相同。
extension=php_mbstring.dll
;extension=php_big_int.dll
extension=php_bz2.dll
extension=php_cpdf.dll
extension=php_crack.dll
extension=php_curl.dll
extension=php_db.dll
extension=php_dba.dll
extension=php_dbase.dll
extension=php_dbx.dll
extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_hyperwave.dll
extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_java.dll
extension=php_ldap.dll
;extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mime_magic.dll
extension=php_ming.dll
extension=php_mssql.dll
extension=php_msql.dll
;extension=php_oci8.dll
extension=php_openssl.dll
;extension=php_oracle.dll
extension=php_pdf.dll
extension=php_pgsql.dll
;extension=php_printer.dll
extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
extension=php_w32api.dll
extension=php_xmlrpc.dll
extension=php_xslt.dll
extension=php_yaz.dll
extension=php_zip.dll
上面這些,開頭沒有加分號的是打開的擴展,加了分號的是沒有打開的擴展。上面的設置包含了在 Windows 2003 上默認安裝情況下可以打開所有擴展(這裡列出的是 php 4 的)。
session.save_path = c:\sessions
這個是 session 文件默認保存的目錄,這個目錄必須是一個存在的目錄,不然默認的 session 功能會無效。我這裡設置的是一個 ramdisk 上的一個目錄。將 session.save_path 設置在 ramdisk 上可以加快 session 處理的速度。如果你沒有安裝 ramdisk,你可以把它指定到其他盤的任何一個目錄下,如 C:\sessions 目錄、C:\Windows\Temp 目錄等。
OK,基本工作作完了,現在該配置 IIS 了。
打開「 Internet 信息服務(IIS) 管理器」,在「 Web 服務擴展」里,選擇「添加一個新的 Web 服務擴展」,擴展名可填寫「PHP ISAPI 擴展」,要求的文件選擇:C:\php\sapi\php4isapi.dll(如果安裝的是 PHP5,則此處是 C:\php\sapi\php5isapi.dll,下同),並設置擴展狀態為允許。
打開「網站」-「屬性」-「ISAPI 篩選器」-「添加」,篩選器名稱可填寫「PHP」,可執行文件仍然選擇 C:\php\sapi\php4isapi.dll。
打開「網站」-「屬性」-「主目錄」-「應用程序設置」-「配置」-「應用程序擴展」-「添加」,可執行文件還是選擇 C:\php\sapi\php4isapi.dll。擴展名填寫「.php」,動作限制為「HEAD,GET,POST」。
打開「網站」-「屬性」-「文檔」-「啟用默認內容文檔」-「添加」,可以將 index.php 添加為默認內容文檔。
然後選擇「伺服器機器名」-「所有任務」-「重新啟動 IIS」來重啟 IIS。
測試
在默認網站發布目錄下,建立一個測試頁面:
下載:phptest.php
phpinfo();
?
如果打開這個頁面能夠看到 php 安裝配置信息,就算是安裝成功了。
如果想要更優化的執行 php 程序,可以安裝 ZendOptimizer-2.6.0-Windows-i386.exe ,這個東西安裝非常簡單,這裡就不介紹了。
升級
現在升級就非常簡單了。只需要將新版本的 PHP 二進位壓縮包下載下來,將原來的 C:\php 目錄刪除,將新版本解壓縮到 C:\php 目錄中,然後重新啟動一下 IIS 就可以了。不需要修改任何配置,也不需要往 System32 目錄中複製任何文件。是不是很方便啊
原創文章,作者:YWYQ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141238.html