我想讓我的Mac上的xdebug工作。我正在使用內置版本的Apache(2.2.1)和PHP(5.3.8)的OS 10.6。我跟着Xdebug的網站,基本上由這些步驟對 「tailored installation instructions」:OS X上的xdebug部分工作(例如,在終端但不是瀏覽器中打印堆棧跟蹤)。
- 構建Xdebug的(版本2.1.3)從源
- 移動
xdebug.so
到/usr/lib/php/extensions/no-debug-non-zts-20090626
- 添加爲php.ini: zend_extension = /usr/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
- 重新啓動網絡服務器。
從我的理解,應該是這樣。我知道大多數人使用像PHPEclipse這樣的IDE來使用xdebug,但是聽起來並不是這樣,只是爲了在頁面上獲得調試輸出。許多舊的指令都涉及安裝MAMP,但看起來不再需要。
跡象Xdebug的工作:當我運行php -m
和phpinfo()
我得到了XDebug預期的信息。在腳本中,我可以調用xdebug_is_enabled()
(返回1)和xdebug_get_function_stack()
(返回堆棧)等函數。
方法xdebug不工作:我安裝xdebug的主要原因是在發生錯誤時得到堆棧跟蹤,這種情況沒有發生。根據this documentation page,我應該得到一個堆棧跟蹤,只要display_errors
在php.ini中設置爲On,(它就是這樣)。我試過了應該引發警告的代碼(例如,echo(hello)
)以及產生致命錯誤的代碼(例如,當$ x不是對象時爲$x->awesomefunction()
)。兩者都不會產生任何xdebug輸出,致命錯誤只會導致頁面無聲無息地死去。我鏈接到的文檔中給出的測試代碼也不會產生任何結果。
更新:事實證明,如果我從終端運行帶有致命錯誤的腳本,我確實從xdebug獲得堆棧跟蹤。然而,它仍然沒有顯示出來,當我從瀏覽器中運行的腳本
此外,定期錯誤報告現在分成:以前,我會通過包括命令得到錯誤輸出:
ini_set("display_errors","1");
ERROR_REPORTING(E_ALL);
現在,將這些行放入我的腳本中也不會產生任何錯誤報告。 (在瀏覽器中,當我從終端運行腳本時確實會顯示錯誤。)
那麼,這裏有什麼問題?我有沒有離開xcode安裝的東西?我的系統中有其他地方掛着的設置,是否可以抑制錯誤?我嘗試了所有我能想到的,但我很樂意測試你的想法。
您是否試過在控制檯而不是瀏覽器中運行測試來查找錯誤? – 2012-03-18 10:33:57
有趣!當我運行一個從控制檯產生致命錯誤的腳本時,我確實從xdebug獲得了一個堆棧跟蹤,但是當我在瀏覽器中運行它時,我仍然沒有。我會更新我的問題... – octern 2012-03-18 10:45:40
您是否考慮過使用預編譯的LIIP PHP包?它們包含了xDebug,我發現它們非常易於使用和配置。 http://php-osx.liip.ch/ – GordonM 2012-03-18 10:52:15