IntelliJ IDEA:配置Xdebug

2019-03-20 17:22 更新

配置Xdebug

此功能僅在Ultimate版本中受支持。
以下內(nèi)容僅在安裝并啟用PHP插件時有效!

下載Xdebug

  • 下載與您的PHP版本兼容的Xdebug擴展,并將其保存在該php/文件夾中。
    • 安裝PHP引擎期間定義php/文件夾 的位置。

    • 如果您使用的是AMP軟件包,則可能已安裝Xdebug擴展。按照xdebug.txt中的說明進行操作。

將Xdebug與PHP解釋器集成

  1. 在編輯器中打開活動的php.ini文件:

    1. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,單擊“語言和框架”下的“PHP”。

    2. 在打開的PHP頁面上,單擊“CLI解釋器”字段旁邊的browseButton。

    3. 在打開的“CLI解釋器”對話框中,“配置文件”只讀字段顯示活動php.ini文件的路徑。單擊“在編輯器中打開”。

  2. 要禁用阻止Xdebug的Zend調(diào)試器和Zend優(yōu)化器工具,請刪除或注釋掉php.ini文件中的以下行:

    zend_extension=<path_to_zend_debugger> zend_extension=<path_to_zend_optimizer>
  3. 要啟用Xdebug,請找到php.ini文件中的[Xdebug]部分并按如下所示進行更新: 

    [Xdebug]
    zend_extension="<path to php_xdebug.dll>"
    xdebug.remote_enable=1
    xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000)

    要通過Xdebug代理啟用多用戶調(diào)試,請找到該xdebug.idekey設(shè)置并為其指定一個您選擇的值。此值將用于在Xdebug代理服務(wù)器上注冊IDE。

  4. 保存并關(guān)閉php.ini文件。

  5. 通過執(zhí)行以下任一操作來驗證Xdebug安裝:

    • 在命令行中,運行以下命令:

      php --version

      輸出應(yīng)在已安裝的擴展中列出Xdebug:

      安裝了Xdebug擴展
    • 創(chuàng)建一個包含以下代碼的php文件:

      phpinfo();

      在瀏覽器中打開文件。該phpinfo輸出應(yīng)包含Xdebug部分:

      ps xdebug啟用瀏覽器

注:在PHP 5.3及更高版本,您只需要使用zend_extension,而不是zend_extension_ts,zend_extension_debugextension

在IntelliJ IDEA中配置Xdebug

  1. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,選擇:語言和框架|PHP。

  2. 檢查與所選PHP解釋器關(guān)聯(lián)的Xdebug安裝:

    1. 在PHP頁面上,從CLI解釋器列表中選擇相關(guān)的PHP安裝,然后單擊該字段旁邊的“ 瀏覽(browseButton)”。該列表顯示了IntelliJ IDEA中可用的所有PHP安裝,請參閱配置本地PHP解釋器配置遠程PHP解釋器。

    2. 打開的CLI解釋器對話框顯示以下內(nèi)容:
      • 所選PHP安裝的版本。

      • 與所選PHP安裝(Xdebug或Zend調(diào)試器)關(guān)聯(lián)的調(diào)試引擎的名稱和版本。如果未配置調(diào)試器,則IntelliJ IDEA顯示Debugger: Not installed。

    或者,打開Xdebug檢查器,粘貼phpinfo()的輸出,然后單擊“分析我的 phpinfo() 輸出”。在“驗證調(diào)試引擎的配置”中了解“檢查Xdebug安裝”的詳細信息。

  3. 定義Xdebug行為。單擊PHP節(jié)點下的“調(diào)試”。在打開的“調(diào)試”頁面上,在Xdebug區(qū)域中指定以下設(shè)置:

    • 在“調(diào)試端口”文本框中,指定端口,工具將通過該端口與IntelliJ IDEA通信。這必須與php.ini文件中指定的端口號完全相同:

      xdebug.remote_port = <port_number>
      默認情況下,Xdebug監(jiān)聽端口9000。
    • 要讓IntelliJ IDEA通過“調(diào)試端口”文本框中指定的端口接受來自Xdebug引擎的任何傳入連接,請選中“可以接受外部連接” 復(fù)選框。

    • 選擇“如果未指定路徑映射則在第一行強制中斷”復(fù)選框,以使調(diào)試器在到達時立即停止并打開未映射到“服務(wù)器”頁面上項目中任何文件的文件。調(diào)試器停在此文件的第一行和調(diào)試工具窗口。變量顯示以下錯誤消息: 無法在服務(wù)器上找到該文件的本地副本<服務(wù)器上文件的路徑>和單擊以設(shè)置映射的鏈接。單擊該鏈接以打開“解析路徑映射問題”對話框,并將問題文件映射到其本地副本。

      清除此復(fù)選框后,調(diào)試器在到達并打開未映射的文件時不會停止,文件剛剛處理完畢,并且不會顯示任何錯誤消息。

    • 選擇“當(dāng)腳本在項目外部時在第一行強制中斷”復(fù)選框,以使調(diào)試器在到達時立即在第一行停止,并在當(dāng)前項目之外打開文件。清除此復(fù)選框后,調(diào)試器會在打開當(dāng)前項目外的文件時繼續(xù)。

  4. 在“外部連接”區(qū)域中,指定IntelliJ IDEA如何處理從主機接收的連接以及未注冊為部署服務(wù)器配置的端口。
    • 通過未注冊的服務(wù)器配置忽略外部連接:選中此復(fù)選框可使IntelliJ IDEA忽略從主機和未注冊為部署服務(wù)器配置的端口接收到的連接。選中此復(fù)選框后,IntelliJ IDEA不會嘗試自動創(chuàng)建部署服務(wù)器配置。

    • 在PHP腳本的第一行中斷: 選中此復(fù)選框可在調(diào)試器與IntelliJ IDEA間建立連接后立即停止(而不是在達到第一個斷點之前自動運行)?;蛘咴谥鞑藛紊洗蜷_:運行|PHP腳本選項中的第一行中斷。

    • 最大同時連接數(shù):使用此選值框限制可以同時處理的外部連接數(shù)。

配置Xdebug以在On-Demand模式下使用

IntelliJ IDEA 2016.2及更高版本支持On-Demand模式,您可以在其中禁用Xdebug以進行全局PHP安裝,并且只有在調(diào)試命令行腳本或需要代碼覆蓋率報告時才能按需自動啟用它。這使您的命令行腳本(包括Composer和單元測試)運行得更快。

  1. 禁用Xdebug用于命令行腳本:
    1. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,選擇“語言和框架”下的“PHP”。

    2. 從PHP可執(zhí)行文件列表中,選擇相關(guān)的PHP解釋器并單擊它旁邊的browseButton。在打開的“CLI解釋器”對話框中,單擊“配置文件:<path to php.ini>”文件旁邊的“在編輯器中打開”鏈接。關(guān)閉所有對話框并切換到已經(jīng)打開php.ini文件的選項卡。 

    3. 在php.ini文件中,找到[XDebug],并通過在前置詞中添加;來注釋以下行:

      ;[XDebug]
      ;zend_extension = "<full_path_to_xdebug>"
    4. 打開“CLI解釋器”對話框,然后單擊“PHP可執(zhí)行文件”字段旁邊的圖標(biāo)動作刷新svg。IntelliJ IDEA通知您未安裝調(diào)試器:

      ps_interpreters_debugger_not_installed.png
  2. 要使IntelliJ IDEA在必要時激活Xdebug,請在“調(diào)試器”擴展文本框的“附加”區(qū)域中指定它的路徑。手動鍵入路徑,或單擊browseButton,并在打開的對話框中選擇位置。

配置Xdebug以在實時模式下使用

IntelliJ IDEA支持在實時(JIT)模式下使用Xdebug,因此它不會一直附加到您的代碼,而是僅在發(fā)生錯誤或拋出異常時才連接到IntelliJ IDEA。Xdebug操作模式通過xdebug.remote_mode設(shè)置切換,默認情況下設(shè)置為req。該模式可用于調(diào)試命令行腳本和Web服務(wù)器調(diào)試。

根據(jù)您是要調(diào)試命令行腳本還是使用Web服務(wù)器,請使用以下方案之一:

命令行腳本

要調(diào)試命令行腳本,請將自定義 -dxdebug.remote_mode=jit指令指定為附加配置選項:

  1. 在“設(shè)置/首選項”對話框(Ctrl+Alt+S)中,導(dǎo)航到:語言和框架|PHP。

  2. 從PHP可執(zhí)行文件列表中,選擇相關(guān)的PHP解釋器并單擊它旁邊的browseButton。

  3. 在打開的“CLI解釋器”對話框中,單擊 “附加”區(qū)域中“配置選項”文本框旁邊的browseButton。

  4. 在打開的“配置選項”對話框中,單擊圖標(biāo)一般添加svg 以添加新條目,然后在“配置指令”字段鍵入-dxdebug.remote_mode和在“值”字段鍵入jit

    單擊“確定”后,將返回“CLI解釋器”對話框,其中顯示“配置選項”文本框顯示:-dxdebug.remote_mode=jit。

Web服務(wù)器調(diào)試

在主菜單上,選擇:運行|Web服務(wù)器調(diào)試驗證。在打開的“Web服務(wù)器調(diào)試驗證”對話框中,選擇要驗證調(diào)試器的Web服務(wù)器。

  • 選擇“本地Web服務(wù)器或共享文件夾”以檢查與本地Web服務(wù)器關(guān)聯(lián)的調(diào)試程序。
    • 創(chuàng)建驗證腳本的路徑: 在此字段中,指定將在其中創(chuàng)建驗證腳本的服務(wù)器文檔根目錄下的文件夾的絕對路徑。對于Inplace類型的Web服務(wù)器,該文件夾位于項目根目錄下。

      該文件夾必須可通過http訪問。

    • 驗證腳本的URL: 在此文本框中,鍵入將在其中創(chuàng)建驗證腳本的文件夾的URL地址。如果項目根目錄映射到可通過http訪問的文件夾,則可以指定項目根目錄或其下的任何其他文件夾。

  • 選擇“遠程Web服務(wù)器” 以檢查與遠程服務(wù)器關(guān)聯(lián)的調(diào)試器。
    • 創(chuàng)建驗證腳本的路徑: 在此字段中,指定將在其中創(chuàng)建驗證腳本的服務(wù)器文檔根目錄下的文件夾的絕對路徑。該文件夾必須可通過http訪問。

    • 部署服務(wù)器: 在此字段中,指定“本地服務(wù)器”或“遠程服務(wù)器”類型的服務(wù)器訪問配置以訪問目標(biāo)環(huán)境。

      從列表中選擇配置,或單擊“部署”對話框中的“瀏覽(browseButton)”。

單擊“驗證”以使IntelliJ IDEA創(chuàng)建驗證腳本,將其部署到目標(biāo)遠程環(huán)境,然后在那里運行。打開報告為已加載并與Xdebug關(guān)聯(lián)的php.ini文件。

  • 在php.ini文件中,找到該[XDebug]部分并將xdebug.remote_mode從默認值req更改為jit。

配置在Docker容器中運行的Xdebug

要配置在Docker容器中運行的Xdebug,請在Dockerfile中提供特定于Xdebug的參數(shù) ,例如:

#Set up debugger
RUN echo
"xdebug.remote_enable=1" >> /etc/php/7.0/apache2/php.ini
RUN echo "xdebug.remote_host=your_host_name_or_ip" >> /etc/php/7.0/apache2/php.ini

在這個例子中,我們正在修改/etc/php/7.0/apache2/php.ini, 提供Xdebug擴展的路徑,remote_enable以及remote_hostXdebug參數(shù)。

請注意,該xdebug.remote_host值應(yīng)替換為運行PhpStorm的計算機的IP地址,改地址可從Docker容器訪問。如果您使用的是Docker for Windows或Docker for Mac,則可以將xdebug.remote_host設(shè)置為host.docker.internal,它會自動解析為主機的內(nèi)部地址,使您可以從容器輕松連接到主機。

配置在Vagrant實例上運行的Xdebug

要配置在Vagrant實例上運行的Xdebug ,請連接到Vagrant機器并在php.ini文件中提供特定于Xdebug的參數(shù) :

[xdebug]
zend_extension=/usr/lib/php5/20131226/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host=10.0.2.2
xdebug.remote_port=9000

請注意,xdebug.remote_host的值是10.0.2.2。這是默認Vagrant設(shè)置中使用的網(wǎng)關(guān),它允許從實例連接到運行IntelliJ IDEA的主機。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號