配置和使用 Xdebug (Laravel + Homestead + Xdebug)

Xdebug deepens debugging PHP apps and websites to a level you can’t receive from the manual process of using code level var_dump().

Setup

To install Xdebug for PHP7 on Ubuntu you will need to do so manually. Ubuntu 15 and lower will not come with a package for PHP7 or its xDebug counterpart.

First, be sure you are using PHP 7 already by checking your version.

vagrant@homestead:~/www/caijing/cms_caijing$ php -v
Should give you something like:

PHP 7.0.1-1+deb.sury.org~trusty+2 (cli) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
    with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

In my case I’m using the Larval Homestead PHP 7 branch with Vagrant and the VirtualBox provider. So, I have PHP 7 already installed and working with Nginx.

Get your php.ini

Next output your php.ini information into a file or place you can get to the information from. I like to save mine to a file called php-info.txt.

vagrant@homestead:~/www/caijing/cms_caijing$ sudo php -i > ~/php-info.txt(一個你可以打開該文件的地方即可)

Use the Xdebug Wizard

打開 php-info 文件,全選,復制,粘貼到 https://xdebug.org/wizard.php,然后點擊 analyse,等待結果。

按照結果提示一步步來即可。

Send the text file information into the wizard at Xdebug Wizard. Then follow the instructions the wizard supplies.

Also, if you are using OSX you may need to run brew install autoconf.

下面是我本機(zzp)的 Instructions:

  1. Download xdebug-2.5.0.tgz (到想要保存的目錄中執行,或者使用絕對路徑 sudo wget -O ~/downloads/xdebug-2.5.0.tgz https://xdebug.org/files/xdebug-2.5.0.tgz)
  2. Unpack the downloaded file with tar -xvzf xdebug-2.5.0.tgz
  3. Run: cd xdebug-2.5.0
  4. Run: phpize (See the FAQ if you don't have phpize.)
    As part of its output it should show:
    Configuring for:
Zend Module Api No:      20151012
Zend Extension Api No:   320151012

If it does not, you are using the wrong phpize. Please follow this FAQ entry and skip the next step.

  1. Run: ./configure
  2. Run: make
  3. Run: cp modules/xdebug.so /usr/lib/php/20151012
  4. Edit /etc/php/7.0/cli/php.ini and add the line
    zend_extension = /usr/lib/php/20151012/xdebug.so
    這里,最好不要改動 php 的主配置文件,在 phpinfo() 輸出內容中找到 Additional .ini files parsed,這里是輔助配置文件。本機為: /etc/php/7.0/fpm/conf.d,軟鏈自:/etc/php/mods-available/
    在目錄下新建一個文件 xdebug.ini, 添加需要的這行代碼。然后還需要在/etc/php/7.0/fpm/conf.d下創建軟鏈。
  5. 重啟服務
sudo service php7.0-fpm restart
sudo service nginx restart

在項目的任何地方設置輸出 phpinfo(), 在網頁上能搜索到 xdebug 的內容,表示配置成功。

Snip20161212_10.png

Enable Remote Xdebug

To use Xdebug remote debugging on a host computer you need to enable remote debugging on the guest server. In my case the guest is the Vagrant Homestead VM.

In the guest php.ini file add: (這些直接復制即可,不用改,同樣添加至 xdebug.ini 即可)

xdebug.remote_enable = 1
xdebug.remote_connect_back=1
xdebug.remote_port = 9000
xdebug.scream=0
xdebug.show_local_vars=1
xdebug.idekey=PHPSTORM

Since I use PhpStorm for Debugging I set my Xdebug key to PHPSTORM.
In the browser, the Xdebug and PhpStorm will look for a cookie called XDEBUG_SESSION with the value PHPSTORM. To set this cookie I use the Chrome Browser extension Xdebug helper. (這里暫時沒有用到)

Reboot Services

To load the new configurations reload your PHP and HTTP server services. In my case that is nginx and php7.0-fpm.

sudo service php7.0-fpm restart
sudo service nginx restart

Configure PHP Storm

Now that Xdebug is install we are ready to configure a “PHP Remote Debug” for PhpStorm.

  1. Under PhpStorm -> Preferences -> Languages&Frameworks -> PHP -> Debug be sure Xdebug is set to port 9000

  2. Under PhpStorm -> Preferences -> Languages&Frameworks -> PHP -> Servers, add a server using port 80 and set the Absolute path on the server.
    其中,因為是虛擬機遠程服務器的原因,勾選了使用 path mappings,將本地的項目目錄 /Users/ZouZhipeng/www/caijing/cms_caijing 和服務器上的絕對路徑 /home/vagrant/www/caijing/cms_caijing 進行關聯。

    Snip20161212_1.png

  3. 屏幕上方的菜單欄:Under Run -> Edit Configurations 添加一個 PHP Remote Debug, 選擇 Servers 后點擊省略號,即跳轉到 Server 配置頁面,即上面第二步操作的。

    Snip20161212_5.png

  4. Set the server and the Ide key(session id) to PHPSTORM

  5. 還是剛才的頁面,左側?,添加一個 PHP Web Application,我的配置如下
    start URL 為項目開始的地址,即下方藍色 url,點擊臭蟲會直接跳轉到這里。


    Snip20161212_3.png

Using PhpStorm with Xdebug on a Remote Server (這部分沒用到)

To start receiving requests from the remote server enable “Debug” with Xdebug helper in Google Chrome on the page you want to debug. Then, unlike local testing that uses “Start Listening for PHP Debug Connections” use Run > Debug instead.

Using the “Debug” command will open up the signal manually and open the direct connection to the remote server.

Set breakpoints and you are off.

Out of Network Servers (troubleshooting,暫未用到)

If you are trying to remote debug a website with Xdebug from outside your local network be sure the 9000 port is not blocked on your network. This is typically done at the router level.

As always consult the Xdebug remote documentation.

Next, ask Google “what is my public ip” and it will tell you.

Then be sure your remote server is not blocking your IP address.

使用方法

在需要調試的行上打上斷點(點擊一下行號后面的空白處即可,再點一次取消斷點),需要說明的是當程序運行到該斷點時,程序會停留在該行,但該行本身不會執行。自此可以查看程序運行到此處時所包含的所有數據信息。當然,查看信息功能相當于使用echo,print或者var_dump。

操作流程

打斷點—>點擊臭蟲—>點擊瀏覽器頁面觸發斷點—>自動跳轉回PhpStorm—>查看攜帶的數據(調試的目的)—>可按步執行查找問題點—>點擊運行(或者F5)—>瀏覽器頁面繼續執行—>調試完成

20160719101531030.png
20160719101534475.png
20160719101537936.png

參考:

http://blog.csdn.net/knight_quan/article/details/51953269
https://xdebug.org/wizard.php
https://php-built.com/2016/01/20/installing-xdebug-for-php7/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容