[TOC]
讀完本節你將了解 Sun Solaris 平臺的 Sun Java System web Server、Sun ONE web Server、iPlanet 和 Netscape 下安裝 PHP 的說明和提示。
從 PHP 4.3.3 起,可以使用基于 NSAPI模塊 PHP 腳本來生成自定義目錄列表和錯誤頁面。更多與 Apache 兼容的功能也可以使用。要了解如何在當前的 web 服務器中支持此功能,請閱讀關于子請求(subrequests)的注釋。
可以在下面的鏈接中了解更多關于在 Netscape Enterprise Server(NES)中設置 PHP 的信息:? http://benoit.noss.free.fr/php/install-php4.html。
要在 Sun JSWS/Sun ONE WS/iPlanet/Netscape web 服務器中編譯 PHP,請為 --with-nsapi=[DIR] 輸入合適的安裝目錄。默認的目錄通常是 /opt/netscape/suitespot/。還可以閱讀 /php-xxx-version/sapi/nsapi/nsapi-readme.txt。
## 安裝獲取配置編譯
1.從 ? http://www.sunfreeware.com/ 或其它下載站點安裝下面的軟件包:(必須的)
~~~
autoconf-2.13
automake-1.4
bison-1_25-sol26-sparc-local
flex-2_5_4a-sol26-sparc-local
gcc-2_95_2-sol26-sparc-local
gzip-1.2.4-sol26-sparc-local
m4-1_4-sol26-sparc-local
make-3_76_1-sol26-sparc-local
mysql-3.23.24-beta(如果想要 mysql 支持)
perl-5_005_03-sol26-sparc-local
tar-1.13(GNU tar)
~~~
2:** 請確認 PATH 變量包含適當的目錄 **
>PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin,并使用 export PATH命令將其導出為環境變量。
3.gunzip php-x.x.x.tar.gz(如果使用 .gz 版本,否則跳到 4)
4.tar xvf php-x.x.x.tar
5.進入 PHP 解壓縮后的目錄: cd ../php-x.x.x
6.在下面的步驟中,請確認 Netscape 服務器安裝在 /opt/netscape/suitespot/ 目錄中。否則,將下面命令中的該路徑修改為正確的路徑并運行:
~~~
./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc
~~~
7.運行 make,然后運行 make install。
在執行了基礎的安裝并閱讀相應的 Readme 文件后,還需要執行一些額外的配置步驟。
## Sun/iPlanet/Netscape 的配置說明
首先需要為 LD_LIBRARY_PATH 環境變量添加一些路徑,以便服務器找到所需的共享庫。可以使用 web 服務器的啟動腳本很好的完成這一工作。啟動腳本通常位于:/path/to/server/https-servername/start。或許需要編輯其配置文件,它位于:/path/to/server/https-servername/config/。
1.添加下面一行到 mime.types(可以在管理服務器中添加):
type=magnus-internal/x-httpd-php exts=php
2.編輯 magnus.conf(若服務器 >= 6)或 obj.conf(若服務器 < 6)并添加下述內容。shlib 的值根據系統的配置會有所不同。它可能類似于 /opt/netscape/suitespot/bin/libphp4.so。應該在 mime types init后添加如下兩行內容:
~~~
Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
~~~
(PHP >= 4.3.3)php_ini 參數是可選的。但是若使用它,便可以將 php.ini 放到 web 服務器的配置目錄中去。
3.在 obj.conf 中配置默認對象(對于虛擬服務器的類 [版本 6.0+] 是在 vserver.obj.conf中):
<Object name="default">
.#注意 下面一行添加在所有“ObjectType”之后,所有“AddLog”之前
Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
.
.
</Object>
(PHP >= 4.3.3)作為附加的參數,可以在 php.ini 中添加一些特別的配置選項。例如可以設置 docroot="/path/to/docroot" 指向 php4_execute 被調用的上下文(context)。對于布爾 ini 鍵值,請使用 0/1 作為其值,而不是 "On"、"Off" 等(它們是無效的),例如,使用 zlib.output_compression=1,而不應使用 zlib.output_compression="On"。
4.本步驟僅在需要配置一個由 PHP 腳本組成的目錄時由必要執行(類似于一個 cgi-bin目錄):
~~~
<Object name="x-httpd-php">
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute [inikey=value inikey=value ...]
</Object>
~~~
之后,可以在管理服務器中配置一個目錄,分配給它 x-httpd-php 風格(style)。這樣在該目錄中的所有文件都會被當作 PHP 來執行。這樣就能很方便的將 PHP 文件更名為 .html以隱藏 PHP。
5.認證的設置:PHP 認證不能與其它任何類型的認證一起工作。所有認證被傳遞到 PHP 腳本。要為整個服務器配置 PHP 認證,在默認對象中添加下面一行:
~~~
<Object name="default">
AuthTrans fn=php4_auth_trans
</Object>
~~~
6.要在單一目錄使用 PHP 認證,添加如下內容:
~~~
<Object ppath="d:\path\to\authenticated\dir\*">
AuthTrans fn=php4_auth_trans
</Object>
~~~
Note:
PHP 使用的堆棧大小取決于 web 服務器的配置。如果運行很大的 PHP 腳本時程序崩潰,推薦在 Admin Server(在“MAGNUS EDITOR”一節)中增大此項。
## CGI 環境和對 php.ini 推薦的修改
當編寫 PHP 腳本時,應特別注意 Sun JSWS/Sun ONE WS/iPlanet/Netscape 是一個多線程 web 服務器。因此,所有請求都運行在相同的進程空間(Web 服務器自己的空間),該空間僅有一套環境變量。如果想獲得 CGI 變量,例如 PATH_INFO、HTTP_HOST 等,使用原有的 PHP 3.x 的方式(getenv()),或使用類似的方式(注冊全局變量到環境變量,$_ENV),都是不可行的。只能獲得運行中的 web 服務器的環境變量,而不能獲得任何有效的 CGI 變量!
Note:
**為什么在環境中存在(無效的)CGI 變量?**
答:這是因為從管理服務器中啟動 web 服務器進程時,運行了 web 服務器的啟動腳本,它事實上是一個 CGI 腳本(管理服務器中的一個 CGI 腳本!)。這便是為什么啟動的 web 服務器包含一些 CGI 變量。可以嘗試不從管理服務器啟動 web 服務器,用 root 用戶登錄使用命令行手動啟動它,會發現這些 CGI 形式的變量不復存在。
要在 PHP 4.x 中正確獲得 CGI 變量,僅需修改腳本使用超級全局變量 $_SERVER。如果老腳本中使用了 $HTTP_HOST 等變量,應該在 php.ini 中打開 register_globals,并且要修改變量順序(注意:從中刪除 "E",因為不需要這里的環境變量):
variables_order = "GPCS"
register_globals = On
錯誤頁面及自造目錄列表的特別使用 (PHP >= 4.3.3)
可以使用 PHP 為 "404 Not Found" 或類似的錯誤代碼生成錯誤頁面。將下面幾行添加到 obj.conf 中以覆蓋默認的錯誤頁面:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]
XXX 是 HTTP 錯誤代碼。請刪除任何可能干擾 Error 設置的指令。如果想為所有可能存在的錯誤提供一個頁面,則將 code 參數刪除。腳本可以通過 $_SERVER['ERROR_TYPE'] 獲得 HTTP 狀態代碼。
另一種可能是生成自造目錄列表。只要創建一個 PHP 腳本,來顯示目錄列表 并在 obj.conf 中為 type="magnus-internal/directory" 將相應的默認 Service 行替換為:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]
錯誤和目錄列表頁面中,原始的 URI 和翻譯的 URI 均被分別儲存在 $_SERVER['PATH_INFO'] 和 $_SERVER['PATH_TRANSLATED'] 變量中。
關于 nsapi_virtual()和子請求的注意事項(PHP >= 4.3.3)
NSAPI 模塊現在支持 nsapi_virtual() 函數(別名: virtual()),用來在 web 服務器上創建子請求(subrequests)和在 web 頁面插入請求的結果。此函數使用了一些 NSAPI 中還沒有文檔說明的函數。在 Unix 下,該模塊自動查找需要的函數,若它們存在則使用它們。若不存在,函數 nsapi_virtual() 被禁用。
Note:
但是要注意,對 **nsapi_virtual() **的支持是試驗性質的!
- 入門指引
- 簡介
- PHP是什么
- PHP能做什么
- 簡明教程
- 學PHP需要什么
- 我的第一個PHP頁面
- 實用的PHP腳步
- PHP是如何處理表單的
- 在新版本的PHP如何實用舊的PHP代碼
- 下一步需要做什么
- PHP語言參考
- PHP基本語法
- PHP標記
- PHP多進程管理-pcntl_fork
- PHP文件上傳易犯錯誤
- PHP從HTML中分離
- PHP的指令分隔符
- PHP序列化serialize
- PHP類常量
- PHP Traits
- 從 HTML 中分離
- 注釋
- PHP數據類型
- PHP支持的類型簡介
- 布爾類型(Boolean)就是易經知識
- 整型(integer)即整數
- 浮點型(float)
- 字符串(string)
- 數組(Array)
- 對象(object)一定要搞
- 資源類型(resource)
- PHP安裝與環境配置
- 安裝前需要考慮的事項
- Unix系統下安裝PHP
- Unix 系統下安裝 Apache 1.3.x
- Unix 系統下安裝 Apache 2.x
- Unix 系統下安裝 Nginx 1.4.x
- Unix 平臺安裝 Lighttpd 1.4
- Sun Solaris 上的 Sun、iPlanet 和 Netscape 服務器
- CGI 命令行設置
- 針對 HP-UX 平臺的安裝提示
- 在 OpenBSD 系統下的安裝PHP
- Debian GNU/Linux 安裝說明
- 在Mac OS X 系統下安裝PHP
- 使用軟件包
- 使用內置的 PHP
- Windows 系統下的安裝
- 云計算平臺上的安裝
- Microsoft Azure
- 在亞馬遜(Amazon EC2)安裝PHP
- PHP語法參考
- 類型
- NULL
- Callback 回調類型
- 本文檔中使用的偽類型與變量
- 類型轉換的判別
- PHP 類型比較表
- 常量和變量
- 語法基礎
- 預定義變量
- 變量范圍
- 可變變量
- 外部變量
- 常量
- 語法
- 魔術常量
- PHP表達式&運算符
- 賦值運算符
- 位運算符
- 比較運算符
- 錯誤控制運算符
- 執行運算符
- 遞增/遞減運算符
- 邏輯運算符
- 字符串運算符
- 數組運算符
- 類型運算符
- 流程控制
- continue
- switch
- declare
- return
- require
- include
- require_once