用Zend Studio+PHPnow+Zend Debugger搭建PHP服務器調試環境

 

本人主要是做ASP.NET開發的,但有時候也會接觸到PHP,而且我認爲PHP有很多源碼值得學習,我們不是學習PHP代碼的寫法,而是學習源碼的實現思路,或者免強叫爲算法。

作爲一名非專業的PHP開發者,想要較方便地讀懂並搞清楚一個PHP功能模塊的運行細節,搭建一個PHP調試環境,然後單步調試程序,以掌握程序的整個運行過程顯的尤爲重要。

一、 準備安裝文件

1、PHPnow-1.5.3“PHPnow 是 Win32 下綠色免費的 Apache + PHP + MySQL 環境套件包。簡易安裝、快速搭建的 PHP 環境。”

2、ZendDebugger-5.2.14Zend公司的PHP調試工具或叫插件。 http://downloads.zend.com/pdt/server-debugger/ZendDebugger-5.2.14-cygwin_nt-i386.zip

3、ZendStudioEnterpriseEdition-v5.5.0據說PHP業界最著名的IDE,不知道基於Eclipse插件的PHP開發環境如何,有時間玩一下再說。

二、 配置程序

1、安裝PHPnow。把安裝包PHPnow-1.5.3.zip解壓到一個地方,像我這裏解壓到“D:\soft\PHP”,然後雙擊PHP文件夾中的“Setup.cmd”開始安裝,中間安裝到MySql的時候會提示你輸入數據庫用戶名和密碼,本地測試用一般就都設爲“root”。安裝完成後在瀏覽器輸入以下地址http://127.0.0.1/,如果成功的話,你將會看到如下畫面:

注意:如果你的系統之前有安裝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目錄,我們可以看到下面那樣的文件結構:

現在要把文件夾中的X_X_x_comp文件夾重命名爲php-X.X.x,比如將“5_2_x_comp”重命名爲“php-5.2.x”,因爲我的測試環境都是php5.2的,所以我可以只改“5_2_x_comp”這一個文件夾。這裏的改動是爲了等一下在php.ini中配置它。

現在去PHP安裝目錄修改PHP配置文件,這個文件通常被命名爲“php.ini”,讓服務器能正確加載我們的模塊。但是這個PHPnow環境下的PHP配置文件不叫“php.ini”,而是“php-apache2handler.ini”,我們怎麼可以知道當前WEB服務器所用PHP的配置文件名呢。下面就是一個辦法:在“D:\soft\PHP\htdocs”目錄,建立一個phpinfo.php文件,並在其中輸入內容“<?php echo phpinfo(); ?>”,然後打開瀏覽器可以看到如下信息,反白顯示路徑就是當前PHP配置文件所在路徑了:

注意:這裏指的PHP配置文件是網站依賴的PHP配置文件,不是下面提到的Zend Studio目錄下的php.ini文件(Zend Studio也自帶了幾個不同版本的PHP),如下圖:

修改“D:\soft\PHP\php-5.2.9-2-Win32\php-apache2handler.ini”文件。用記事本打開該文件,移動側欄滾動條至最底部,在文檔尾部可以發現以下配置節點:

在其尾部追加:

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

最終應該像這樣:

解釋一下:

(1);zend_extension_ts="D:\soft\PHP\ZendDebugger\5_2_x_comp\ZendDebugger.dll"這是我註釋的,因爲這樣設置zend_extension_ts重複,出現不能與ZendOptimizer共存情況。

(2)、zend_extension_manager.debug_server_ts="D:\soft\PHP\ZendDebugger",這裏指到目錄就行了,PHP會自動根據自己版本去下面找php_X_X_X這樣文件夾下面的dll文件,這也是上面我們爲什麼要對ZendDebugger下面子目錄改名的原因。

(3)、zend_debugger.allow_hosts=127.0.0.1/32,192.168.0.8/24,這裏後面的192.168.0.8改成你自己的IP就行了,可以像下面那樣查看到自己的IP地址:

後面的“32”,“24”不用改,它們不是目錄名,而是子網掩碼類型代號,“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/我們發現組件支持框裏Zend Optimizer支持情況還是“Yes”的,說明我們Zend Debugger與Zend Optimizer是共存運行的(網上提供好些教程是不共存運行的,那樣不夠完美)。

3、安裝Zend Studio。解壓ZendStudioEnterpriseEdition-v5.5.0.270.rar,執行解壓文件後的win_setup.exe文件,默認一路Next下去,這樣就把Zend Studio成功安裝在C盤了。運行它,然後關閉,因爲默認是英文的,我們去改成中文。在C盤(即Zend Studio安裝所在盤),搜索文件“desktop_options.xml”,如下圖。

找到後用記事本打開,找到:

<customized_property ID="desktop.language">
 <locale language="en" country="" variant=""/>
</customized_property>

把上面的en改成zh並保存,然後把這個文件標記爲“只讀”( Zend Studio在特定的時候自動重啓會改回默認設置,設成“只讀”它就無能爲力了)。另外像下面的編碼選項也可根據實際情況修改:

<customized_property ID="editing.encoding">
 <encoding name="Default"/>
</customized_property>

比如可以改爲<encoding name="UTF-8"/>,在用Zend Studio打開代碼文件發現中文亂碼時候可以修改這個選項看看。

三、 開始調試

從“開始菜單”找到“Zend Development Environment(Zend Studio)”並運行它。新建一個項目,並在這個項目中引入一個開發好的源碼包,我這裏的源碼包在“D:\soft\PHP\htdocs\cms”,這cms是SupeSite7.0程序,在新建項目的調試選項裏設置成像下圖,其中Debug Server URL也可以是127.0.0.1這樣的地址,只要幾處設置同步就行:

 

另外“工具”菜單“首選項”的“調試”標籤也設置成如下圖:

現在檢查一下:

成功的話將顯示“已與Debug Server成功連接。”對話框。

打開SupeSite7.0源碼項目,選擇Zend Studio內置瀏覽器,並在地址欄裏輸入:http://127.0.0.1/cms/ batch.search.php,這裏我演示SupeSite7.0的搜索頁代碼調試。現在你直接按瀏覽器最左邊的“介殼蟲”按鈕(從旁邊倒三角可以選擇不同的調試範圍),直接進入batch.search.php頁面調試(如果batch.search.php頁之前不在編輯狀態,即沒有打開過,直接調試會自動打開,另外如果你用F11逐語句執行的話,當前調試頁包含的外部代碼文件也會被打開。

按調試按鈕後,直接轉到源碼,光標定位在第一個語句了(這裏我沒有設置斷點,並以F5方式調試程序),像下面那樣:

現在我們測試一下點擊一個按鈕提交表單值並捕獲它。像下圖那樣,點“搜索”按鈕後看關鍵字“What is CMS ?”是被如何處理的。你操作順序必須像這樣:打開http://127.0.0.1/cms/batch.search.php—>輸入關鍵字“What is CMS ?”—>點擊“搜索”按鈕—>點擊瀏覽器工具欄的“介殼蟲”按鈕。

調試後我們可以看到“What is CMS ?”是用什麼變量存儲並被處理的。如下圖:

至此,整個Zend Studio+PHPnow+Zend Debugger服務器調試環境搭建完畢,並演示了使用方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章