PHP超级配置模块--PHP4,PHP5,module,cgi任你玩转--应用于Apache
來源:?http://www.newasp.net/tech/php/1079.html
?
在Apache之中調(diào)用PHP是個(gè)經(jīng)久不衰的話題,目前的PHP存在PHP4和PHP5的版本,而且在Apache之中調(diào)用PHP還存在module(模塊)方式和CGI方式,同時(shí)Apache還存在Apache1和Apache2兩個(gè)版本.?
在Apache之中調(diào)用PHP存在以下八種模式:?
1,PHP4在Apache1的module模式?
2,PHP4在Apache1的cgi模式?
3,PHP5在Apache1的module模式?
4,PHP5在Apache1的cgi模式?
5,PHP4在Apache2的module模式?
6,PHP4在Apache2的cgi模式?
7,PHP5在Apache2的module模式?
8,PHP5在Apache2的cgi模式?
你有沒有想過,把這八種調(diào)用模式,就在一個(gè)配置文件之中給配置出來呢??
也許你作過,但是沒有完全成功,因?yàn)檫@八種模式之間,是不能相互兼容的哦.?
然而,靈活運(yùn)用Apache的一條指令,將這八種模式乖乖的馴服,收容在一起,就易如反掌了.?
在Apache之中調(diào)用PHP是個(gè)經(jīng)久不衰的話題,目前的PHP存在PHP4和PHP5的版本,而且在Apache之中調(diào)用PHP還存在module(模塊)方式和CGI方式,同時(shí)Apache還存在Apache1和Apache2兩個(gè)版本.?
在Apache之中調(diào)用PHP存在以下八種模式:?
1,PHP4在Apache1的module模式?
2,PHP4在Apache1的cgi模式?
3,PHP5在Apache1的module模式?
4,PHP5在Apache1的cgi模式?
5,PHP4在Apache2的module模式?
6,PHP4在Apache2的cgi模式?
7,PHP5在Apache2的module模式?
8,PHP5在Apache2的cgi模式?
你有沒有想過,把這八種調(diào)用模式,就在一個(gè)配置文件之中給配置出來呢??
也許你作過,但是沒有完全成功,因?yàn)檫@八種模式之間,是不能相互兼容的哦.?
然而,靈活運(yùn)用Apache的一條指令,將這八種模式乖乖的馴服,收容在一起,就易如反掌了.?
哪一條指令?原來就是:?
在http://w.yi.org/ftp/FAPM/apache/Apache2/zh/mod/core.html#ifdefine有對(duì)這條指令的完整介紹.?
<IfDefine>指令?
代碼:?
說明: 只有在啟動(dòng)時(shí)進(jìn)行了一個(gè)成功的測(cè)試后才進(jìn)行的一個(gè)封裝指令?
語法: <IfDefine [!]參數(shù)名> ... </IfDefine>?
上下文: 服務(wù)器配置, 虛擬主機(jī), 目錄, .htaccess?
覆蓋項(xiàng): All?
狀態(tài): 核心?
模塊: core?
<IfDefine測(cè)試>...</IfDefine>配置段用于標(biāo)識(shí)附加施用條件的指令。<IfDefine>配置段中的指令僅當(dāng)測(cè)試結(jié)果為真時(shí)才進(jìn)行處理。如果測(cè)試失敗。此配置段中的指令將會(huì)被忽略。?
<IfDefine>配置段中的測(cè)試可以為以下兩種形式之一:?
參數(shù)名?
!參數(shù)名?
在第一種情況下,僅當(dāng)符合參數(shù)名的參數(shù)已經(jīng)定義的情況下才對(duì)開始和結(jié)束標(biāo)記之間的指令進(jìn)行處理。第二種情況則截然相反。僅當(dāng)參數(shù)名沒有定義的情況下才進(jìn)行指令的處理。?
參數(shù)名變量是在服務(wù)啟動(dòng)時(shí),通過httpd命令行的-D參數(shù)-這樣的形式指定的。?
<IfDefine>配置段是可以嵌套的,從而可以實(shí)現(xiàn)簡(jiǎn)單的多參數(shù)測(cè)試。比如說:?
$ httpd -DReverseProxy ...?
# httpd.conf?
<IfDefine ReverseProxy>?
LoadModule rewrite_module modules/mod_rewrite.so?
LoadModule proxy_module modules/libproxy.so?
</IfDefine>?
##################################################################?
# PHP超級(jí)配置模塊--PHP4,PHP5,module,cgi任你玩轉(zhuǎn)--應(yīng)用于Apache #?
##################################################################?
# 配置版本 通用版v1.01 #?
# 配置編寫 喬楚/HonestQiao #?
# 編寫日期 2004年5月29日 #?
# 聯(lián)系方式 QQ:5601680 MSN:honestqiao@hotmail.com #?
##################################################################?
# 主頁(yè)地址:?http://w.yi.org/?#?
# 論壇地址:?http://bbs.chinaunix.net/forum/viewforum.php?f=13?#?
##################################################################?
##################################################################?
# 版權(quán)聲明 #?
# 本PHP超級(jí)配置模塊系喬楚(HonestQiao)所寫,你可以任意使用和傳播#?
#本PHP超級(jí)配置模塊,但是請(qǐng)保留配置內(nèi)容以上的聲明部分(因?yàn)楸韭暶鞑?#?
#會(huì)對(duì)你的實(shí)際配置造成任何影響),并且不得以任何方式表明是你寫了本 #?
#PHP超級(jí)配置模塊. #?
# 謝謝你的使用,歡迎批評(píng)建議和報(bào)告錯(cuò)誤. #?
##################################################################?
SetEnv php_control_status not_php_control_status?
<IfDefine Apache=Apache>?
SetEnv php_control_status Apache?
<IfDefine php=php4>?
SetEnv php_control_status Apache_php4?
<IfDefine type=mod>?
SetEnv php_control_status Apache_php4_mod?
LoadModule php4_module /usr/local/php-4.3.6/sapi/php4apache.dll #請(qǐng)修改為實(shí)際的路徑?
#AddModule mod_php4.c?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
#PHPINIDir /usr/local/etc/php/php4.ini?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
<IfDefine !type=mod>?
SetEnv php_control_status Apache_php4_not_mod?
<IfDefine type=cgi>?
SetEnv php_control_status Apache_php4_cgi?
ScriptAlias /php/ "/usr/local/php-4.3.6/" #請(qǐng)修改為實(shí)際的路徑?
Action application/x-httpd-php "/php/php.exe"?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
</IfDefine>?
</IfDefine>?
<IfDefine !php=php4>?
SetEnv php_control_status Apache_not_php4?
<IfDefine php=php5>?
SetEnv php_control_status Apache_php5?
<IfDefine type=mod>?
SetEnv php_control_status Apache_php5_mod?
LoadModule php5_module /usr/local/php-5.0.0RC2/php5apache.dll #請(qǐng)修改為實(shí)際的路徑?
#AddModule mod_php5.c?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php .php5?
AddType application/x-httpd-php-source .phps?
#PHPINIDir /usr/local/etc/php/php5.ini?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
<IfDefine !type=mod>?
SetEnv php_control_status Apache_php5_not_mod?
<IfDefine type=cgi>?
SetEnv php_control_status Apache_php5_cgi?
ScriptAlias /php/ "/usr/local/php-5.0.0RC2/" #請(qǐng)修改為實(shí)際的路徑?
Action application/x-httpd-php "/php/php-cgi.exe"?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php .php5?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
</IfDefine>?
</IfDefine>?
</IfDefine>?
</IfDefine>?
<IfDefine !Apache=Apache>?
SetEnv php_control_status not_Apache?
<IfDefine Apache=Apache2>?
SetEnv php_control_status Apache2?
<IfDefine php=php4>?
SetEnv php_control_status Apache2_php4?
<IfDefine type=mod>?
SetEnv php_control_status Apache2_php4_mod?
LoadModule php4_module /usr/local/php-4.3.6/sapi/php4apache2.dll #請(qǐng)修改為實(shí)際的路徑?
#AddModule mod_php4.c?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
PHPINIDir /usr/local/etc/php/php4.ini #請(qǐng)修改為實(shí)際的路徑?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
<IfDefine !type=mod>?
SetEnv php_control_status Apache2_php4_not_mod?
<IfDefine type=cgi>?
SetEnv php_control_status Apache2_php4_cgi?
ScriptAlias /php/ "/usr/local/php-4.3.6/" #請(qǐng)修改為實(shí)際的路徑?
Action application/x-httpd-php "/php/php.exe"?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
</IfDefine>?
</IfDefine>?
<IfDefine !php=php4>?
SetEnv php_control_status Apache2_not_php4?
<IfDefine php=php5>?
SetEnv php_control_status Apache2_php5?
<IfDefine type=mod>?
SetEnv php_control_status Apache2_php5_mod?
LoadModule php5_module /usr/local/php-5.0.0RC2/php5apache2.dll #請(qǐng)修改為實(shí)際的路徑?
#AddModule mod_php5.c?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php .php5?
AddType application/x-httpd-php-source .phps?
PHPINIDir /usr/local/etc/php/php5.ini #請(qǐng)修改為實(shí)際的路徑?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
<IfDefine !type=mod>?
SetEnv php_control_status Apache2_php5_not_mod?
<IfDefine type=cgi>?
SetEnv php_control_status Apache2_php5_cgi?
ScriptAlias /php/ "/usr/local/php-5.0.0RC2/" #請(qǐng)修改為實(shí)際的路徑?
Action application/x-httpd-php "/php/php-cgi.exe"?
#請(qǐng)將php.ini放置到Apache的安裝目錄?
AddType application/x-httpd-php .php?
AddType application/x-httpd-php .php3?
AddType application/x-httpd-php .php4?
AddType application/x-httpd-php .php5?
AddType application/x-httpd-php-source .phps?
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請(qǐng)修改為實(shí)際的路徑?
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請(qǐng)修改為實(shí)際的路徑?
</IfDefine>?
</IfDefine>?
</IfDefine>?
</IfDefine>?
</IfDefine>?
</IfDefine>
#使用方法:?
# 設(shè)備命令:?
# 連接配置:?
# 將以上PHP超級(jí)配置模塊保存為一個(gè)文件,名稱為php.conf,然后在Apache的配置文件之中,使用Include "/path/to/php.conf"來引用PHP超級(jí)配置模塊;?
# 修改PHP超級(jí)配置模塊之中提示需要修改的部分,一般是修改為你的文件所在的實(shí)際路徑.?
#?
# 啟動(dòng)命令:?
# ApacheControl -k start -D Apache=ApacheVersion php=phpVersion type=RunType?
# 假設(shè)啟動(dòng)apache的文件名為httpd,執(zhí)行指令如下:?
# httpd -k start -D Apache=ApacheVersion php=phpVersion type=RunType?
# ApacheVersion:表示Apache的版本Apache,Apache--表示Apache1;Apache2--表示Apache2;?
# phpVersion:表示PHP的版本,php4--表示PHP4;php5--表示PHP5;?
# RunType:表示運(yùn)行模式,mod--表示以module(模塊)方式運(yùn)行;cgi--表示以CGI方式運(yùn)行?
#?
# 通道信息:?
# PHP超級(jí)配置模塊狀態(tài):表示環(huán)境變量之中PHP超級(jí)配置的狀態(tài),可以通過CGI探針或者phpinfo()來查看.?
# 說明:狀態(tài)名稱:php_control_status?
# 狀態(tài)值: not_php_control_status: 表示沒有處于PHP超級(jí)配置模塊?
# Apache : 表示進(jìn)入Apache1配置區(qū)域?
# Apache_php4 : 表示進(jìn)入Apache1的PHP4配置區(qū)域?
# Apache_php4_mod : 表示進(jìn)入Apache1的PHP4的module(模塊)方式配置區(qū)域?
# Apache_php4_not_mod : 表示進(jìn)入Apache1的PHP4的非module(模塊)方式配置區(qū)域?
# Apache_php4_cgi : 表示進(jìn)入Apache1的PHP4的CGI方式配置區(qū)域?
# Apache_not_php4 : 表示進(jìn)入Apache1的非PHP4配置區(qū)域?
# Apache_php5 : 表示進(jìn)入Apache1的PHP5配置區(qū)域?
# Apache_php5_mod : 表示進(jìn)入Apache1的PHP5的module(模塊)方式配置區(qū)域?
# Apache_php5_not_mod : 表示進(jìn)入Apache1的PHP5的非module(模塊)方式配置區(qū)域?
# Apache_php5_cgi : 表示進(jìn)入Apache1的PHP5的CGI方式配置區(qū)域?
#?
# not_Apache : 表示進(jìn)入非Apache1配置區(qū)域?
# Apache2_php4 : 表示進(jìn)入Apache2的PHP4配置區(qū)域?
# Apache2_php4_mod : 表示進(jìn)入Apache2的PHP4的module(模塊)方式配置區(qū)域?
# Apache2_php4_not_mod : 表示進(jìn)入Apache2的PHP4的非module(模塊)方式配置區(qū)域?
# Apache2_php4_cgi : 表示進(jìn)入Apache2的PHP4的CGI方式配置區(qū)域?
# Apache2_not_php4 : 表示進(jìn)入Apache2的非PHP4配置區(qū)域?
# Apache2_php5 : 表示進(jìn)入Apache2的PHP5配置區(qū)域?
# Apache2_php5_mod : 表示進(jìn)入Apache2的PHP5的module(模塊)方式配置區(qū)域?
# Apache2_php5_not_mod : 表示進(jìn)入Apache2的PHP5的非module(模塊)方式配置區(qū)域?
# Apache2_php5_cgi : 表示進(jìn)入Apache2的PHP5的CGI方式配置區(qū)域?
#
#測(cè)試工程:?
# 例如在Window2000環(huán)境下,執(zhí)行以下設(shè)備命令:?
# cd /path/to/apache/?
# apache -k start -D Apache=Apache php=php4 type=mod?
# 執(zhí)行被設(shè)備命令之后,php_control_status的值變?yōu)锳pache_php4_mod,表示處于Apache1的PHP4的Module模式之下;
#?
# cd /path/to/apache/?
# apache -k start -D Apache=Apache php=php5 type=cgi?
# 執(zhí)行被設(shè)備命令之后,php_control_status的值變?yōu)锳pache_php5_cgi,表示處于Apache1的PHP5的CGI模式之下;?
#?
# cd /path/to/apache2/bin/?
# apache -k start -D Apache=Apache2 php=php4 type=cgi?
# 執(zhí)行被設(shè)備命令之后,php_control_status的值變?yōu)锳pache2_php4_cgi,表示處于Apache2的PHP4的CGI模式之下;?
#?
# cd /path/to/apache2/bin/?
# apache -k start -D Apache=Apache2 php=php5 type=mod?
# 執(zhí)行被設(shè)備命令之后,php_control_status的值變?yōu)锳pache2_php5_mod,表示處于Apache2的PHP5的Module模式之下;?
#?
#?
#常見問題:?
# 1.啟動(dòng)時(shí)提示錯(cuò)誤,且錯(cuò)誤出在PHP超級(jí)配置模塊的相關(guān)行,一般表示相關(guān)的設(shè)置路徑不正確?
# 2.啟動(dòng)成功但是沒有調(diào)用PHP,你可以查看php_control_status的狀態(tài)值,以確定問題所在,可能執(zhí)行設(shè)備明令時(shí)所給的參數(shù)不正確?
# 3.啟動(dòng)正確,也可以調(diào)用PHP了,那你還說什么問題啊,要恭喜你可以正常使用了啊.?
# 4.如果問題還不能解決,請(qǐng)和本PHP超級(jí)配置模塊的開發(fā)者取得聯(lián)系.?
#?
#?
#附加說明:?
# 本PHP超級(jí)配置模塊,只是給出了一個(gè)通用的PHP在Apache之下調(diào)用的控制方式,使用本PHP超級(jí)配置模塊的相關(guān)行,需要你對(duì)Apache和PHP有一定了解.?
# 如果你需要更為具體的配置,請(qǐng)和我聯(lián)系,我將根據(jù)您的實(shí)際運(yùn)行環(huán)境,作出適合您的實(shí)際運(yùn)行環(huán)境的PHP超級(jí)配置模塊的定制版本.?
#
總結(jié)
以上是生活随笔為你收集整理的PHP超级配置模块--PHP4,PHP5,module,cgi任你玩转--应用于Apache的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习中的F1-score
- 下一篇: 让php4和php5共存的方法