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
Last revision Both sides next revision
vms:webdev:phpfarm:xdebug [2015/05/06 16:31]
admin [Configuring Apache fcgid Timeout]
vms:webdev:phpfarm:xdebug [2016/11/30 01:46]
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 166: 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 195: 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, the projects sub directory 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]].