IntelliJ IDEA:配置Xdebug

2019-03-20 17:22 更新

配置Xdebug

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

下載Xdebug

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

    • 如果您使用的是AMP軟件包,則可能已安裝Xdebug擴(kuò)展。按照xdebug.txt中的說(shuō)明進(jìn)行操作。

將Xdebug與PHP解釋器集成

  1. 在編輯器中打開(kāi)活動(dòng)的php.ini文件:

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

    2. 在打開(kāi)的PHP頁(yè)面上,單擊“CLI解釋器”字段旁邊的browseButton。

    3. 在打開(kāi)的“CLI解釋器”對(duì)話框中,“配置文件”只讀字段顯示活動(dòng)php.ini文件的路徑。單擊“在編輯器中打開(kāi)”。

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

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

    [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)

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

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

  5. 通過(guò)執(zhí)行以下任一操作來(lái)驗(yàn)證Xdebug安裝:

    • 在命令行中,運(yùn)行以下命令:

      php --version

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

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

      phpinfo();

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

      ps xdebug啟用瀏覽器

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

在IntelliJ IDEA中配置Xdebug

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 在PHP腳本的第一行中斷: 選中此復(fù)選框可在調(diào)試器與IntelliJ IDEA間建立連接后立即停止(而不是在達(dá)到第一個(gè)斷點(diǎn)之前自動(dòng)運(yùn)行)。或者在主菜單上打開(kāi):運(yùn)行|PHP腳本選項(xiàng)中的第一行中斷。

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

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

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

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

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

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

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

      ps_interpreters_debugger_not_installed.png
  2. 要使IntelliJ IDEA在必要時(shí)激活Xdebug,請(qǐng)?jiān)凇罢{(diào)試器”擴(kuò)展文本框的“附加”區(qū)域中指定它的路徑。手動(dòng)鍵入路徑,或單擊browseButton,并在打開(kāi)的對(duì)話框中選擇位置。

配置Xdebug以在實(shí)時(shí)模式下使用

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

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

命令行腳本

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

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

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

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

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

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

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

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

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

      該文件夾必須可通過(guò)http訪問(wèn)。

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

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

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

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

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

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

配置在Docker容器中運(yùn)行的Xdebug

要配置在Docker容器中運(yùn)行的Xdebug,請(qǐng)?jiān)贒ockerfile中提供特定于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

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

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

配置在Vagrant實(shí)例上運(yùn)行的Xdebug

要配置在Vagrant實(shí)例上運(yùn)行的Xdebug ,請(qǐng)連接到Vagrant機(jī)器并在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

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)