Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vms:webdev:phpfarm:xdebug [2015/05/06 16:30]
admin [Testing your XDebug]
vms:webdev:phpfarm:xdebug [2016/11/30 01:46] (current)
admin [Setting up Xdebug’s remote debug with Atom (1.12.5)]
Line 9: Line 9:
 XDebug can be [[http://​xdebug.org/​download.php|downloaded in a variety of versions]] or even built from [[https://​github.com/​derickr/​xdebug|sources]]. XDebug can be [[http://​xdebug.org/​download.php|downloaded in a variety of versions]] or even built from [[https://​github.com/​derickr/​xdebug|sources]].
  
-Although the easier ​way to get it running is using Xdebug'​s website [[http://​xdebug.org/​wizard.php|installation wizard]] that will help you determine what to do to get XDebug working on your system. Follow the simple instructions and you'll soon have XDebug installed and running.+Although the easiest ​way to get it running is using Xdebug'​s website [[http://​xdebug.org/​wizard.php|installation wizard]] that will help you determine what to do to get XDebug working on your system. Follow the simple instructions and you'll soon have XDebug installed and running.
  
 First refer to [[vms:​webdev:​apache#​make_sure_everything_is_running as_expected|this section of the wiki]] to have PHP output it's configuration summary, and copy/paste it in the above mentioned [[http://​xdebug.org/​wizard.php|XDebug wizard]]. First refer to [[vms:​webdev:​apache#​make_sure_everything_is_running as_expected|this section of the wiki]] to have PHP output it's configuration summary, and copy/paste it in the above mentioned [[http://​xdebug.org/​wizard.php|XDebug wizard]].
Line 102: Line 102:
   FcgidIOTimeout 300   FcgidIOTimeout 300
 ... ...
 +</​code>​
 +
 +Don't forget to restart the apache2 service to apply those changes:
 +<​code>​
 +> service apache2 restart
 </​code>​ </​code>​
 ===== Setting up Xdebug’s remote debug with PHPStorm ===== ===== Setting up Xdebug’s remote debug with PHPStorm =====
Line 161: Line 166:
  
 ---- ----
-===== Setting up Xdebug’s remote debug with InteeliJ ​IDEA (14.1.1) ===== +===== Setting up Xdebug’s remote debug with IntelliJ ​IDEA (14.1.1) =====
-----+
  
 === PHP Remote Interpreter plugin: === === PHP Remote Interpreter plugin: ===
Line 190: Line 194:
 From top right icons menu of main IntelliJ IDEA's project window, use "down arrow" button (Select Run/Debug configuration),​ then "Edit configurations..."​\\ From top right icons menu of main IntelliJ IDEA's project window, use "down arrow" button (Select Run/Debug configuration),​ then "Edit configurations..."​\\
  
 +
 +===== Setting up Xdebug’s remote debug with Atom (1.12.5) =====
 +
 +=== Install Atom Package php-debug (0.2.4) ===
 +  * Open the Atom editor and open settings: Edit > Preferences (ctrl-,)
 +  * Select "​Install"​ from the left menu
 +  * Type "​php-debug"​ in Search packages field, then //return// to launch the search
 +  * php-debug should appear on top of the list, click the "​Install"​ button
 +  * Read the README that is displayed
 +
 +For php-debug to be able to give accurate feedback in Atom, you'll need to set the **Path Maps** in the php-debug settings.\\
 +Note that you only need to specify the mapping from your server'​s root directory to your corresponding local root, your projects sub directories can be inferred from this information.
 +
 +=== Configure Xdebug ===
 +You have to configure Xdebug for the specific PHP version that you want to debug with, so you'll have to adapt the following with the corresponding location.
 +
 +In this case we'll configure our PHP version 5.6.27 to debug from Atom. First we'll edit our ''​php.ini''​ file:
 +
 +<​code>​
 +> sudo nano /​opt/​phpfarm/​inst/​php-5.6.27/​lib/​php.ini
 +
 +PASTE AT EOF (removing any existing [xdebug] lines):
 +[xdebug]
 +zend_extension = "/​opt/​phpfarm/​inst/​php-5.6.27/​lib/​php/​extensions/​no-debug-non-zts-20131226/​xdebug.so"​
 +xdebug.profiler_output_dir = "/​tmp/​xdebug"​
 +xdebug.trace_output_dir = "/​tmp/​xdebug"​
 +; additional settings (atom)
 +xdebug.remote_enable=1
 +xdebug.remote_handler=dbgp
 +xdebug.remote_mode=req
 +xdebug.remote_host=172.20.20.1
 +xdebug.remote_port=9000
 +xdebug.idekey=xdebug.atom
 +xdebug.remote_autostart=true
 +xdebug.collect_params=4
 +xdebug.collect_vars=on
 +xdebug.show_local_vars=on
 +
 +> sudo service apache2 restart
 +</​code>​
 +
 +To make sure those values have been taken into account, load the phpinfo page created earlier and check the //​**xdebug**//​ section to make sure the displayed values are in concordance with the ones you've introduced in the ''​php.ini''​ file.
 +
 +=== Remote IP Address ===
 +The ''​xdebug.remote_host''​ IP address should be your workstation'​s IP. In this example we are using a virtualbox VM as development server. In this case, to find out what IP address to use, issue the ''​ip a''​ command from your workstation'​s command line and look for the ''​inet''​ value of the ''​vboxnet0:''​ interface.
 +
 +In case you're using Xdebug > 2.1 and your workstation'​s IP address can vary, you could try to use ''​xdebug.remote_connect_back=true''​ instead of the ''​xdebug.remote_host''​ value. In this case, Xdebug will try to use the $_SERVER['​HTTP_X_FORWARDED_FOR'​] and $_SERVER['​REMOTE_ADDR'​] variables to find out which IP address to use. In this case you should **not** set the ''​xdebug.remote_host''​ parameter in your php.ini.
 +
 +=== Xdebug autostart ===
 +With ''​xdebug.remote_autostart=true'',​ PHP will **connect to your editor for every script it executes**, which brings quite an overhead to all your PHP executions on the server. The alternative is to use ''​xdebug.remote_autostart=false'',​ and install an Xdebug helper extension for your browser of choice, such as:
 +  * [[https://​addons.mozilla.org/​en-US/​firefox/​addon/​the-easiest-xdebug/​|The easiest Xdebug for Mozilla Firefox]]
 +  * [[https://​chrome.google.com/​webstore/​detail/​xdebug-helper|Xdebug Helper for Google Chrome]]
 +
 +These browser extensions will give you a button within your browser to enable/​disable Xdebug.\\
 +In case you notice, in the xdebug table of the phpinfo page, that the **IDE Key** value (right under the version number) **is different from the xdebug.idekey** value set in the php.ini file, verify the parameters of your browser'​s xdebug extension.
 +
 +=== All Xdebug settings ===
 +You can learn more about all possible Xdebug settings in the [[https://​xdebug.org/​docs/​all_settings|Xdebug documentation]].