php cgi模块,PHP5模块和CGI
把PHP5作為CGI安裝是一個快速運行PHP5的方法,并且不必修改PHP4的配置。
另外一個不必修改PHP4的配置用同時獲得完全的PHP5功能的方法是把PHP5設置在apache的另外一個端口上監聽來自客戶端的請求。比如apache的8080端口。這樣就可以在80端口上處理PHP4腳本,在8080端口上處理PHP5的面向對象的腳本,一舉兩得。
記住CGI安裝方式與模塊安裝方式相比有一些限制。它不能直接利用APACHE HTTP基本身份認證的優勢。也不能使用apache_note()函數讀取和設置notes 表中的值
。(apache_note() 是用于 Apache 的函數,可以取得或者設置請求 notes 表中的值。如果只有一個參數調用,則返回記錄 note_name 的當前值。如果用兩個參數調用,則將記錄 note_name 的值設為 note_value 并返回記錄 note_name 的前一個值。)引用自 | php手冊->函數參考->apache函數庫->apache_note
php手冊下載地址http://cn2.php.net/distributions/manual/php_manual_zh.chm
作為CGI配置PHP5
刪除?--with-apxs.
加入?--enable-force-cgi-redirect選項.
加入 --prefix=/usr/local/php5選項.
定制?php.ini.
PHP5 要用--prefix=/usr/local/php5選項強制安裝到其知道的目錄并PHP4隔離開。并且不能覆蓋PHP4的文件和配置數據。
在apache配置文件HTTP.CONF中添加下列指令,然apache知道PHP5的cgi程序的位置。也就是做一個APACHE到PHP5 CGI的目錄映射。ScriptAlias /php5 /usr/local/php5/bin
Options +ExecCGI +FollowSymLinks
AllowOverride None
ScriptAlias
把web服務器的URL路徑映射到本地文件系統,既然我們這里是作為CGI程序安裝。那么apache必須得知道cgi程序得位置。例如,ScriptAlias /book/php5 /usr/local/php/php5/bin,服務器域名為www.apache.org那么當客戶端的請求到達apache服務器的時候,它就會到/usr/local/php/php5/bin
這個本地文件系統去執行存儲在其中的程序。
建立了映射后,下一步是路由特定文件類型的文件到CGI去執行,這可以通過兩種方法來配置,一種是在http.conf配置文件中添加如下指令
AddHandler php-cgi-script .php
Action php-cgi-script /php5/php
Options +ExecCGI
AddHandler 指令表示任何以 .php結尾的文件都被apach服務器認為是 php-cgi-script腳本,并且轉交給PHP CGI去執行。在一行中可以設置多個文件類型。
例如
AddHandler php-cgi-script .php .phpx .phtml .pxml
那么以php,phpx,phtml,pxml結尾的文件都被認為是php腳本而移交給PHP解析器解析和執行。
第二行 Action 指令告訴apeche php-cgi-script?腳本應該被位于/php5/php目錄下的文件處理,因為先前你做了URL /php5?到本地文件系統的?/usr/local/php5/bin/ 的映射,所以此命令實際上是映射到
了/usr/local/php5/bin/php目錄,這實際上是PHP5 CGI安裝的位置。
最后,既然把PHP5作為CGI運行,你必須打開 +ExecCGI 參數(打開腳本的執行權限),讓apache允許在這個目錄下執行腳本。另外一種方法是在腳本目錄下創建.htaccess訪問控制文件,并在其中加入上面之間的三行指令。apache會在有客戶端請求到達此目錄時自動檢查改文件,看是不是有適當的權限使PHP腳本能夠執行。
用.htaccess配置文件不用重新啟動apach服務器就可以使對配置的修改立即生效。但是,它要求你打開AllowOverride 選項(設置為Options 或 All)。這樣會降低APCHE的執行效率,因為每次請求到達此目錄時apache都要檢查和解析這個文件。當并發請求劇增時,apache服務器的效率會嚴重下降。所以這種方法在并發訪問高的網站時不推薦的。端口????另一個一舉兩得的方法時在一個端口運行PHP4,在另一個端口運行PHP5,這種方法最適合于內部調試和開發。這樣,程序員可以檢查php程序在PHP5環境下的運行狀態。
第一步 在http.conf文件中添加如下兩行
Listen 80
Listen 8080
像其他的web服務器一樣,apache在80端口監聽客戶端請求。上面兩行告訴apache同時在80和8080端口監聽客戶端請求。
然后 設置虛擬主機
ScriptAlias /php5 /usr/local/php5/bin
Options +ExecCGI +FollowSymLinks
AllowOverride None
AddHandler php-cgi-script .php
Action php-cgi-script /php5/php
Options +ExecCGI
用實際的域名替換_default_。如果使用多個虛擬主機,還要用DocumentRoot指令為每個虛擬主機指定不同的根目錄。
例如:
# Virtual Host Specific Options
DocumentRoot /www/www.example.com
# Load PHP 4 Apache Module
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
# Repeated Configuration Options
DocumentRoot /www/www.example.com
# Add PHP 5 CGI Script
ScriptAlias /php5 /usr/local/php5/bin
Options +ExecCGI +FollowSymLinks
AllowOverride None
那么現在你就可以從瀏覽器中用 http://www.mysite.org/訪問 PHP4。從http://www.mysite.org:8080/訪問PHP5了。
總結
以上是生活随笔為你收集整理的php cgi模块,PHP5模块和CGI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习笔记:常用内建模块6 (
- 下一篇: Python学习笔记:常用内建模块7XM