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 [2016/11/29 18:30]
admin [Setting up Xdebug’s remote debug with InteeliJ IDEA (14.1.1)]
vms:webdev:phpfarm:xdebug [2016/11/30 01:46] (current)
admin [Setting up Xdebug’s remote debug with Atom (1.12.5)]
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 197: Line 197:
 ===== Setting up Xdebug’s remote debug with Atom (1.12.5) ===== ===== 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]].