|
本人主要是做ASP.NET開發(fā)的,但有時候也會接觸到php,而且我認為php有很多源碼值得學習,我們不是學習php代碼的寫法,而是學習源碼的實現(xiàn)思路,或者免強叫為算法。
作為一名非專業(yè)的php開發(fā)者,想要較方便地讀懂并搞清楚一個php功能模塊的運行細節(jié),搭建一個php調(diào)試環(huán)境,然后單步調(diào)試程序,以掌握程序的整個運行過程顯的尤為重要。
一、 準備安裝文件1、phpnow-1.5.6。“phpnow 是 Win32 下綠色免費的 Apache + php + MySQL 環(huán)境套件包。簡易安裝、快速搭建的 php 環(huán)境。”
2、ZendDebugger-5.2.14。Zend公司的php調(diào)試工具或叫插件。 http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.14-cygwin_nt-i386.zip
3、ZendStudioEnterpriseEdition-v5.5.0。據(jù)說php業(yè)界最著名的IDE,不知道基于Eclipse插件的php開發(fā)環(huán)境如何,有時間玩一下再說。
二、 配置程序1、安裝phpnow。把安裝包phpnow-1.5.3.zip解壓到一個地方,像我這里解壓到“D:/soft/php”,然后雙擊php文件夾中的“Setup.cmd”開始安裝,中間安裝到MySql的時候會提示你輸入數(shù)據(jù)庫用戶名和密碼,本地測試用一般就都設(shè)為“root”。安裝完成后在瀏覽器輸入以下地址http://127.0.0.1/,如果成功的話,你將會看到如下畫面:
注意:如果你的系統(tǒng)之前有安裝IIS,并且IIS是運行著的,要先把IIS停止掉,不然80端口會沖突,雖然通過“PnCp.cmd”工具可以修改Apache端口,但不建議這樣改。
2、安裝ZendDebugger。把ZendDebugger-5.2.14-cygwin_nt-i386.zip解壓到phpnow安裝目錄,即“D:/soft/php”,然后把ZendDebugger-5.2.14RC9-cygwin_nt-i386文件夾名字改成ZendDebugger這樣短文件名,進到ZendDebugger目錄,我們可以看到下面那樣的文件結(jié)構(gòu):
現(xiàn)在要把文件夾中的X_X_x_comp文件夾重命名為php-X.X.x,比如將“5_2_x_comp”重命名為“php-5.2.x”,因為我的測試環(huán)境都是php5.2的,所以我可以只改“5_2_x_comp”這一個文件夾。這里的改動是為了等一下在php.ini中配置它。
現(xiàn)在去php安裝目錄修改php配置文件,這個文件通常被命名為“php.ini”,讓服務(wù)器能正確加載我們的模塊。但是這個phpnow環(huán)境下的php配置文件不叫“php.ini”,而是“php-apache2handler.ini”,我們怎么可以知道當前WEB服務(wù)器所用php的配置文件名呢。下面就是一個辦法:在“D:/soft/php/htdocs”目錄,建立一個phpinfo.php文件,并在其中輸入內(nèi)容“<?php echo phpinfo(); ?>”,然后打開瀏覽器可以看到如下信息,反白顯示路徑就是當前php配置文件所在路徑了:
注意:這里指的php配置文件是網(wǎng)站依賴的php配置文件,不是下面提到的Zend Studio目錄下的php.ini文件(Zend Studio也自帶了幾個不同版本的php),如下圖:
修改“D:/soft/php/php-5.2.9-2-Win32/php-apache2handler.ini”文件。用記事本打開該文件,移動側(cè)欄滾動條至最底部,在文檔尾部可以發(fā)現(xiàn)以下配置節(jié)點:
在其尾部追加:
zend_extension_manager.debug_server_ts="D:/soft/php/ZendDebugger"
zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.8/24
zend_debugger.expose_remotely=always
最終應(yīng)該像這樣:
解釋一下:
(1);zend_extension_ts="D:/soft/php/ZendDebugger/5_2_x_comp/ZendDebugger.dll"這是我注釋的,因為這樣設(shè)置zend_extension_ts重復(fù),出現(xiàn)不能與ZendOptimizer共存情況。
(2)、zend_extension_manager.debug_server_ts="D:/soft/php/ZendDebugger",這里指到目錄就行了,php會自動根據(jù)自己版本去下面找php_X_X_X這樣文件夾下面的dll文件,這也是上面我們?yōu)槭裁匆獙endDebugger下面子目錄改名的原因。
(3)、zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.8/24,這里后面的192.168.0.8改成你自己的IP就行了,可以像下面那樣查看到自己的IP地址:
后面的“32”,“24”不用改,它們不是目錄名,而是子網(wǎng)掩碼類型代號,“32”代表“255.255.255.255”,“24”代表“255.255.255.0”。
在瀏覽器打開:http://127.0.0.1/phpinfo.php,如果能看到如下信息則表明安裝成功,注意看最后一行“with Zend Debugger v5.2.14, Copyright (c) 1999-2008, by Zend Technologies”。回到http://127.0.0.1/我們發(fā)現(xiàn)組件支持框里Zend Optimizer支持情況還是“Yes”的,說明我們Zend Debugger與Zend Optimizer是共存運行的(網(wǎng)上提供好些教程是不共存運行的,那樣不夠完美)。
3、安裝Zend Studio。解壓ZendStudioEnterpriseEdition-v5.5.0.270.rar,執(zhí)行解壓文件后的win_setup.exe文件,默認一路Next下去,這樣就把Zend Studio成功安裝在C盤了。運行它,然后關(guān)閉,因為默認是英文的,我們?nèi)ジ某芍形摹T贑盤(即Zend Studio安裝所在盤),搜索文件“desktop_options.xml”,如下圖。
找到后用記事本打開,找到:
<customized_property ID="desktop.language">
<locale language="en" country="" variant=""/>
</customized_property>
把上面的en改成zh并保存,然后把這個文件標記為“只讀”( Zend Studio在特定的時候自動重啟會改回默認設(shè)置,設(shè)成“只讀”它就無能為力了)。另外像下面的編碼選項也可根據(jù)實際情況修改:
<customized_property ID="editing.encoding">
<encoding name="Default"/>
</customized_property>
比如可以改為<encoding name="UTF-8"/>,在用Zend Studio打開代碼文件發(fā)現(xiàn)中文亂碼時候可以修改這個選項看看。
三、 開始調(diào)試從“開始菜單”找到“Zend Development Environment(Zend Studio)”并運行它。新建一個項目,并在這個項目中引入一個開發(fā)好的源碼包,我這里的源碼包在“D:/soft/php/htdocs/cms”,這cms是SupeSite7.0程序,在新建項目的調(diào)試選項里設(shè)置成像下圖,其中Debug Server URL也可以是127.0.0.1這樣的地址,只要幾處設(shè)置同步就行:
另外“工具”菜單“首選項”的“調(diào)試”標簽也設(shè)置成如下圖:
現(xiàn)在檢查一下:
成功的話將顯示“已與Debug Server成功連接。”對話框。
打開SupeSite7.0源碼項目,選擇Zend Studio內(nèi)置瀏覽器,并在地址欄里輸入:http://127.0.0.1/cms/ batch.search.php,這里我演示SupeSite7.0的搜索頁代碼調(diào)試。現(xiàn)在你直接按瀏覽器最左邊的“介殼蟲”按鈕(從旁邊倒三角可以選擇不同的調(diào)試范圍),直接進入batch.search.php頁面調(diào)試(如果batch.search.php頁之前不在編輯狀態(tài),即沒有打開過,直接調(diào)試會自動打開,另外如果你用F11逐語句執(zhí)行的話,當前調(diào)試頁包含的外部代碼文件也會被打開。
按調(diào)試按鈕后,直接轉(zhuǎn)到源碼,光標定位在第一個語句了(這里我沒有設(shè)置斷點,并以F5方式調(diào)試程序),像下面那樣:
現(xiàn)在我們測試一下點擊一個按鈕提交表單值并捕獲它。像下圖那樣,點“搜索”按鈕后看關(guān)鍵字“What is CMS ?”是被如何處理的。你操作順序必須像這樣:打開http://127.0.0.1/cms/batch.search.php―>輸入關(guān)鍵字“What is CMS ?”―>點擊“搜索”按鈕―>點擊瀏覽器工具欄的“介殼蟲”按鈕。
調(diào)試后我們可以看到“What is CMS ?”是用什么變量存儲并被處理的。如下圖:
至此,整個Zend Studio+phpnow+Zend Debugger服務(wù)器調(diào)試環(huán)境搭建完畢,并演示了使用方法。
php技術(shù):用Zend Studio+PHPnow+Zend Debugger搭建PHP服務(wù)器調(diào)試環(huán)境步驟,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。