在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有對這條指令的完整介紹.
<IfDefine>指令
代碼:
說明: 只有在啟動時(shí)進(jìn)行了一個(gè)成功的測試后才進(jìn)行的一個(gè)封裝指令
語法: <IfDefine [!]參數(shù)名> ... </IfDefine>
上下文: 服務(wù)器配置, 虛擬主機(jī), 目錄, .htaccess
覆蓋項(xiàng): All
狀態(tài): 核心
模塊: core
<IfDefine測試>...</IfDefine>配置段用于標(biāo)識附加施用條件的指令。<IfDefine>配置段中的指令僅當(dāng)測試結(jié)果為真時(shí)才進(jìn)行處理。如果測試失敗。此配置段中的指令將會被忽略。
<IfDefine>配置段中的測試可以為以下兩種形式之一:
參數(shù)名
!參數(shù)名
在第一種情況下,僅當(dāng)符合參數(shù)名的參數(shù)已經(jīng)定義的情況下才對開始和結(jié)束標(biāo)記之間的指令進(jìn)行處理。第二種情況則截然相反。僅當(dāng)參數(shù)名沒有定義的情況下才進(jìn)行指令的處理。
參數(shù)名變量是在服務(wù)啟動時(shí),通過httpd命令行的-D參數(shù)-這樣的形式指定的。
<IfDefine>配置段是可以嵌套的,從而可以實(shí)現(xiàn)簡單的多參數(shù)測試。比如說:
$ httpd -DReverseProxy ...
# httpd.conf
<IfDefine ReverseProxy>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/libproxy.so
</IfDefine>
##################################################################
# PHP超級配置模塊--PHP4,PHP5,module,cgi任你玩轉(zhuǎn)--應(yīng)用于Apache #
##################################################################
# 配置版本 通用版v1.01 #
# 配置編寫 喬楚/HonestQiao #
# 編寫日期 2004年5月29日 #
# 聯(lián)系方式 QQ:5601680 MSN:[email protected] #
##################################################################
# 主頁地址: http://w.yi.org/ #
# 論壇地址: http://bbs.chinaunix.net/forum/viewforum.php?f=13 #
##################################################################
##################################################################
# 版權(quán)聲明 #
# 本PHP超級配置模塊系喬楚(HonestQiao)所寫,你可以任意使用和傳播#
#本PHP超級配置模塊,但是請保留配置內(nèi)容以上的聲明部分(因?yàn)楸韭暶鞑?#
#會對你的實(shí)際配置造成任何影響),并且不得以任何方式表明是你寫了本 #
#PHP超級配置模塊. #
# 謝謝你的使用,歡迎批評建議和報(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 #請修改為實(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
#請將php.ini放置到Apache的安裝目錄
AddType application/x-httpd-php-source .phps
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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/" #請修改為實(shí)際的路徑
Action application/x-httpd-php "/php/php.exe"
#請將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" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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 #請修改為實(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
#請將php.ini放置到Apache的安裝目錄
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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/" #請修改為實(shí)際的路徑
Action application/x-httpd-php "/php/php-cgi.exe"
#請將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" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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 #請修改為實(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 #請修改為實(shí)際的路徑
AddType application/x-httpd-php-source .phps
Alias "/server-php" "/usr/local/etc/php/phpinfo.php4" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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/" #請修改為實(shí)際的路徑
Action application/x-httpd-php "/php/php.exe"
#請將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" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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 #請修改為實(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 #請修改為實(shí)際的路徑
Alias "/server-php" "/usr/local/etc/php/phpinfo.php5" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(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/" #請修改為實(shí)際的路徑
Action application/x-httpd-php "/php/php-cgi.exe"
#請將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" #請修改為實(shí)際的路徑
Alias "/phpMyAdmin" "/usr/local/phpMyAdmin-2.6.0-alpha2/" #請修改為實(shí)際的路徑
</IfDefine>
</IfDefine>
</IfDefine>
</IfDefine>
</IfDefine>
</IfDefine>
#使用方法:
# 設(shè)備命令:
# 連接配置:
# 將以上PHP超級配置模塊保存為一個(gè)文件,名稱為php.conf,然后在Apache的配置文件之中,使用Include "/path/to/php.conf"來引用PHP超級配置模塊;
# 修改PHP超級配置模塊之中提示需要修改的部分,一般是修改為你的文件所在的實(shí)際路徑.
#
# 啟動命令:
# ApacheControl -k start -D Apache=ApacheVersion php=phpVersion type=RunType
# 假設(shè)啟動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超級配置模塊狀態(tài):表示環(huán)境變量之中PHP超級配置的狀態(tài),可以通過CGI探針或者phpinfo()來查看.
# 說明:狀態(tài)名稱:php_control_status
# 狀態(tài)值: not_php_control_status: 表示沒有處于PHP超級配置模塊
# 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ū)域
#
#測試工程:
# 例如在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.啟動時(shí)提示錯(cuò)誤,且錯(cuò)誤出在PHP超級配置模塊的相關(guān)行,一般表示相關(guān)的設(shè)置路徑不正確
# 2.啟動成功但是沒有調(diào)用PHP,你可以查看php_control_status的狀態(tài)值,以確定問題所在,可能執(zhí)行設(shè)備明令時(shí)所給的參數(shù)不正確
# 3.啟動正確,也可以調(diào)用PHP了,那你還說什么問題啊,要恭喜你可以正常使用了啊.
# 4.如果問題還不能解決,請和本PHP超級配置模塊的開發(fā)者取得聯(lián)系.
#
#
#附加說明:
# 本PHP超級配置模塊,只是給出了一個(gè)通用的PHP在Apache之下調(diào)用的控制方式,使用本PHP超級配置模塊的相關(guān)行,需要你對Apache和PHP有一定了解.
# 如果你需要更為具體的配置,請和我聯(lián)系,我將根據(jù)您的實(shí)際運(yùn)行環(huán)境,作出適合您的實(shí)際運(yùn)行環(huán)境的PHP超級配置模塊的定制版本.
#
新聞熱點(diǎn)
疑難解答