最新最詳細最簡潔Eclipse調試PHP配置詳解(Xdebug,Zend Debugger)

?

搬家注:該日志寫于2011 年 04 月 07 日,Eclipse,PHP等版本號很多,更新也比較快,請注意文章中的版本。本文不一定幫您解決問題,但能給您一些解決問題的思路及一些概念。

最近開始做SRTP項目WebOS,于是又開始了PHP之旅。搭建PHP環境又用了一兩天,一個字,煩。遇到了很多問題,從Apache+php+mysql的配置到 Eclipse+PHP+XDebug(Zend Debbuger也同時配置了)的開發環境搭建,各種Google,各種教程貼,各種問題帖,各種矛盾的說法,雖然大部分人都按自己說的解決了問題,但是同一個問題解答方法各異,弄得我也是一頭霧水,突然覺得這大部分時間都在為Google添加利潤點擊廣告罷了。

搜索了很多,也解決了不少問題,得到了很多感悟,不知從哪個說去,一點點來吧。關于配置Apache+php+mysql,我將在另一篇日志中說說我的經驗。

先說說我的各種版本,搜索引擎最大浪費就在與很多很過時的東西,很多都在說Eclipse3.2,3.4,php5.1等等,于是各種悲劇,感覺和小白鼠像極了。

操作系統:Win7 Ultimate

Eclipse:Eclipse for PHP Developers(Version: Helios Release,Build id: 20100617-1415)這里說一下,Pdt我沒配,但是Debug插件的配置和eclipse關系不太大。

PHP:php5.2.17 TS(thread safety)vc6(剛從官網下的)官網上分兩種版本5.3.6的vc9版本和5.2.17的vc6版本,vc9是在IIS下用的,而vc6是在apache下用的(左邊有說明),每個版本又分為thread safe和non thread safe的(和下面的debug插件配置有關),一般推薦下載thread safe。?

XDebug 2.1.1(官網)版本很多,不過有個鏈接可以幫你選擇。(主要三個方面TS or not,vc6 or vc9,? 32 bits or 64 bits). 我選擇PHP 5.2 VC6 TS (32 bit) .

Zend Debugger: 這個最麻煩,需要注冊才能下載,它在推廣Zend Studio。插件名叫Studio Web Debugger,windows版本名字叫ZendDebugger-20100729-cygwin_nt-i386.zip,里面有各種版本的debugger,一定要注意5_x_x_和nts(這個是non thread safety),TS的要用5_2_x_comp(和Xdebug反了過來)。另外把dummy.php拷到根文檔下(http://localhost:8081/dummy.php)為了在Eclipse中測試成功與否。

弄好各種版本之后,就開始配置了,就是一個php.ini的配置。

這里先說下Eclipse中調試的兩種方式: Debug as PHP script 和 Debug as PHP web page。

Debug as PHP script是直接調用php.exe解釋的,不用開apache也能調試(事實上和apache無關)。但是缺陷也很大,不能在瀏覽器中打開網頁,也沒辦法得到cookie,post等的值,即$_COOKIE, $_REQUEST等(可以再命令行參數中舍,但是很不方便,也不好用)。

Debug as PHP web page其實就是一種特殊的遠程調試,可以在瀏覽器中打開網頁,然后執行,可以動態的得到cookie等值,我就是用這種模式調試的,不過既然是 Remote debugging,就要在配置中開起來,否則這種調試設了斷點也不起作用。下面配置會說到。

好了,Xdebug的配置

[xDebug] ;這一行沒有也沒關系
zend_extension_ts = “C:\Program Files\PHP\ext\php_xdebug-2.1.1-5.2-vc6.dll” ;注意ts指的是thread safety,此版本的一定要有。最好寫上文件的整個路徑,相對路徑問題很大,很可能出問題。

xdebug.remote_enable = On ;其實官網上的配置沒有給這一句,如果不配置這項,那么就沒辦法使用Debug as PHP web page了,所以還是開了。

網上有很多項,我只配置了這兩項也照常使用,因為我不知道網上說的其他項的意思,我就沒配。當然,一可以去查官方文檔,第二在phpinfo里面xdebug下每一配置項都列出來了,你想配哪項配哪項。

配置成功的標志,查看phpinfo,能看到下面兩項

看有Xdeug

配置項挺多的,慢慢去研究吧

Zend debugger配置,php.ini中

[zend debugger]
zend_extension_ts = “C:\Program Files\PHP\ext\ZendDebugger.dll”;同樣注意ts和完整的路徑。
zend_debugger.allow_hosts=127.0.0.1,192,168.0.4;允許調試的主機IP,
zend_debugger.expose_remotely=always;就是遠程調試,debug as php web page就要用這個

同樣我也配置了上面三項就正常使用了。

配置成功的標志,查看phpinfo。

有這個就配置成功啦。

Eclipse的配置還沒說呢,其實到這如果懂了Debug as php script和debug as php web page的原理Eclipse的配置也就很簡單了,無非是在Eclipse選項-》php-》debug里面配置一下就好了,有php executables(php.exe),php servers注意端口(如http://localhost:8081),兩個debug插件的端口(默認一個9000一個10000)就不要亂改了。另外,如果配置了Zend Debugger,注意把前面的dummy.php拷過去才能點擊test Debbuger成功哦。下面在php文件上點擊斷點,在文件上右擊Debug as 就可以開始了,對就這么簡單。

總結一下配置的整個過程中容易出錯的地方:

  • 版本的對應關系要對,如php和debug插件的版本一致。
  • 一定要注意ts(thread safe)和nts(none thread safe),有時候標注的是ts,另一個版本不標注;有時候標注的是nts,而ts就不標注。
  • 注意官方文檔堅決的說明,Apache下一定要用php vc6版本的。
  • 兩個插件中的zend_extension_ts中最好寫上完整路徑,相對路徑這東西和環境變量有關,問題很大。
  • 配置debug插件成功與否與Eclipse無關,建議先配置能夠在phpinfo中成功了再去在Eclipse中設置。
  • 莫名其妙的錯誤怎么辦,最好的辦法是查看apache錯誤日志:在 apache安裝目錄下的logs/eroror.log文件中有詳細記錄,這個我將它稱作解決問題的終極大殺器,看了它,你一定明白了在哪區找錯誤,該搜索哪些問題。比如出現了failed loading? extention “ext\ZendDebugger.dll” ,你是不是想到了apache沒有找到這個dll文件或者我是不是搞錯了dll文件是ts還是nts呢。這個解決辦法我會在另一篇關于apache+php+mysql的文章中詳細介紹。

題外話:開源軟件的配置固然是繁,版本固然多,版本更新也快,軟件的使用上就必然有點不得心應手了,尤其是各種軟件組合在一起問題那就更多了。那么怎么解決這些問題呢,我們一般的做法是有那個問題搜索那個問題,看了一個個解決方案,一個個教程,而忽視了最根本的東西,官方文檔,看了文檔,你才能知其然,知其所以然。我在上面樂此不疲的提到,官方文檔怎么說怎么說,就是因為我在一次次的像小白鼠一樣試驗著網上的各種教程的時候,最終還是官方文檔幫我解決了各種問題,各種疑惑。想想現在,就是出了問題我也不怕,并且認為,一步一步像這樣配置下來怎么會出問題呢。所以回歸原點,才是我們解決問題的根本之所在。

注:既然我在標題中寫了最新最詳細最簡潔的字眼,但是我的表述不一定準卻,考慮也并非周全。之所以這樣,是想和大家一起討論,大家有什么問題都可以留言,我們一起來解決,讓它最新最詳細也最簡潔,讓更多的后來人少走點彎路。

轉載于:https://www.cnblogs.com/lspvic/archive/2011/05/27/2059938.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275482.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275482.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

按鍵精靈易語言c,求助(把按鍵精靈的源碼轉為易語言的)

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓MoveTo 1203,673IfColor 1203,673,"252489",2 ThenMoveTo 417, 242Delay 10072LeftDown 1LeftClick 1LeftUp 1MoveTo 982, 551Delay 7660LeftDoubleClick 1Delay 10Delay 30LeftUp 1LeftUp 1LeftUp 1MoveTo 1102, 709Del…

入門前端學習路線圖【送書】

大家好,我是若川。記得點上方音頻聽小姐姐配音,超級好聽。華章圖書又贊助了書籍送福利給大家。本次送4本書的抽獎方式是:截止到9月6日(周一)20:00,在留言區留言任意內容。我會在留言區抽取「1位」關注我公眾…

單選按鈕設置為被選中狀態_為什么要設置錯誤的按鈕狀態

單選按鈕設置為被選中狀態當正確的方法出錯時 (When the right way goes wrong) Let’s say you want to create a click effect on an HTML button. The first idea that many people get is to do something that reproduces the feeling of the sound emitted by a real but…

「娃娃分享」-常見自校檢分析實例.

自校檢是許多軟件的保護手段之一,對軟件加個簡單的殼再增加自校檢在一定程序上可以抵擋住一大部分新手,不過,對許多人來說,這個保護已經很弱了。。下面講幾種常見的解決自校檢方法,寫的粗略,希望大家補充。…

用VC和MinGW導出dll的def和lib(a)文件

為什么80%的碼農都做不了架構師?>>> 原文地址:http://zhangyafeikimi.iteye.com/blog/404580 有了dll文件需要導出def文件: pexports zlib1.dll > zlib1.def 有了dll和def文件,需要導出MinGW的.a文件:…

51中斷編程c語言,[新人求指教]51C語言編程可否用中斷令循環結束提早結束

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓C51_C語言編程控制流水燈硬件電路 p0 接 led 8 個,P33 接按鍵使用中斷2開機燈按1~8逐位閃爍,并循環按鍵后改為 兩燈亮 的流水燈下面寫了個程序#include #include #define uchar unsigned char#define uint u…

產品設計美學案例分析_美學在產品設計中的重要性

產品設計美學案例分析重點 (Top highlight)In one of my previous jobs, I had really interesting debates with the CEO regarding whether we should spend more time improving the way our app looks and feels. ‘How could he not care that the design is outdated?! …

即將到來的ECMAScript 2022標準

大家好,我是若川。周末分享一篇相對簡單的文章。最近組織了源碼共度活動:1個月,200人,一起讀了4周源碼,參與的小伙伴都表示收獲很大。如果感興趣可以點擊鏈接掃碼加我微信 ruochuan12。另外:昨天的推文入門…

c語言中二叉樹中總結點,C語言二叉樹的三種遍歷方式的實現及原理

二叉樹遍歷分為三種:前序、中序、后序,其中序遍歷最為重要。為啥叫這個名字?是根據根節點的順序命名的。比如上圖正常的一個滿節點,A:根節點、B:左節點、C:右節點,前序順序是ABC(根節…

動態庫的創建與使用

1、動態庫文件的創建 (1)編寫源文件 (2)編譯生成動態庫 g -fPIC -shared -o libfile_operation.so file_operation.cpp 此編譯過程分為兩步,等同于下面的兩個命令: g -c -fPIC file_operation.cpp …

ux設計中的各種地圖_UX寫作中的移情

ux設計中的各種地圖Demetri Martin is a master of comedic situations. If you’ve never seen Demetri Martin是喜劇情境的大師。 如果你從未見過 him before, he has a sort of dry brand of observational humor, relying more on anecdotes than full stories, and often…

字符串搜索。HOJ1530 Compound Words。

stl set實現字符串搜索。。效率一般。(附二分搜索。) Compound WordsTime limit:1sec.Submitted:233Memory limit:32MAccepted:81Source: Waterloo ACM Programming Contest Sep 28, 1996 You are to find all the two-word compound words in a dictionary. A two-word compo…

字節3-1前端面試官自學Vue的正確姿勢

大家好,我是若川。前不久和一個字節前端TL朋友聊天,說到大廠前端供需脫節的情況。特別是使用Vue框架的,因為簡單易學好上手,但是能夠深入理解的人并不多,大多都只停留在應用層面,缺乏更深層面的理解。尤其是…

android視圖工具,android studio的HierarchyViewer工具如何知道android屏幕的視圖屬性

讓我們首先看看adb是如何組織的.它有3個主要組件,如here所述 –> client – 在用于開發的機器上運行的客戶端.通過發出adb命令從shell調用客戶端.層次結構查看器還會創建adb客戶端.> server – 在開發計算機上作為后臺進程運行的服務器.它將從adb客戶端發出的命令傳遞給a…

云時代架構讀后感4--IT架構的本質

IT架構的本質 原文地址:http://mp.weixin.qq.com/s?__bizMzAwNTQ4MTQ4NQ&mid2453562304&idx1&snbe86a7bc682c4e76e06b87a10ad45188&chksm8cd136a2bba6bfb430103e50f94b670e799412d0a1cae4eded0eb901847b6d462359ae317635&mpshare1&scene23…

蘋果風格ui_蘋果如何使Soft-UI成為未來

蘋果風格ui重點 (Top highlight)Apple announced some pretty wild updates at WWDC 2020 today.蘋果今天在WWDC 2020上宣布了一些相當瘋狂的更新。 But technology aside, let’s focus on how their UI has changed. It went through the first bitmap representations, thr…

【數據結構】量子危機

問題 宇宙時間公元 5.55 億年,由于某種原因兩大聯盟展開了激戰(maxingc 聯盟采用了微子技術): 邪惡的 maxingc 聯盟采集好了微子能,就要運輸。Maxingc 聯盟的領袖 xc 此時才發現,自己的軍事基地中由微子發射…

android 自定義menu背景,Android編程實現自定義系統菜單背景的方法

本文實例講述了Android編程實現自定義系統菜單背景的方法。分享給大家供大家參考,具體如下:不多說,上圖,見代碼。package lab.sodino.menutest;import android.content.Context;import android.app.Activity;import android.os.Bu…

面試官問 async、await 函數原理是在問什么?

大家好,我是若川。這是 源碼共讀活動《1個月,200人,一起讀了4周源碼》 第四期,紀年小姐姐的第四次投稿。紀年小姐姐通過本次學習提早接觸到generator,協程概念,了解了async/await函數的原理等。第四期是 學…

一步步優化JVM六:優化吞吐量[轉]

2019獨角獸企業重金招聘Python工程師標準>>> 原文:http://ganlv.iteye.com/blog/1571315 參考:http://www.myexception.cn/software-architecture-design/1455594.html 現代JVM是一個具有靈活適應各種應用能力的軟件,盡管很多應用…