IntelliJ IDEA:配置Xdebug

2019-03-20 17:22 更新

配置Xdebug

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

下載Xdebug

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

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

將Xdebug與PHP解釋器集成

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

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

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

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

  2. 要禁用阻止Xdebug的Zend調試器和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代理啟用多用戶調試,請找到該xdebug.idekey設置并為其指定一個您選擇的值。此值將用于在Xdebug代理服務器上注冊IDE。

  4. 保存并關閉php.ini文件。

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

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

      php --version

      輸出應在已安裝的擴展中列出Xdebug:

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

      phpinfo();

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

      ps xdebug啟用瀏覽器

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

在IntelliJ IDEA中配置Xdebug

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 在PHP腳本的第一行中斷: 選中此復選框可在調試器與IntelliJ IDEA間建立連接后立即停止(而不是在達到第一個斷點之前自動運行)。或者在主菜單上打開:運行|PHP腳本選項中的第一行中斷。

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

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

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

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

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

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

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

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

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

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

根據您是要調試命令行腳本還是使用Web服務器,請使用以下方案之一:

命令行腳本

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

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

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

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

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

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

Web服務器調試

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

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

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

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

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

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

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

單擊“驗證”以使IntelliJ IDEA創(chuàng)建驗證腳本,將其部署到目標遠程環(huán)境,然后在那里運行。打開報告為已加載并與Xdebug關聯(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值應替換為運行PhpStorm的計算機的IP地址,改地址可從Docker容器訪問。如果您使用的是Docker for Windows或Docker for Mac,則可以將xdebug.remote_host設置為host.docker.internal,它會自動解析為主機的內部地址,使您可以從容器輕松連接到主機。

配置在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設置中使用的網關,它允許從實例連接到運行IntelliJ IDEA的主機。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號