{"id":4234,"date":"2017-09-20T12:08:02","date_gmt":"2017-09-20T10:08:02","guid":{"rendered":"https:\/\/florianbrinkmann.com\/en\/?p=4234"},"modified":"2020-02-09T10:59:43","modified_gmt":"2020-02-09T09:59:43","slug":"debugging-xdebug-phpstorm-uberspace","status":"publish","type":"post","link":"https:\/\/florianbrinkmann.com\/en\/debugging-xdebug-phpstorm-uberspace-4234\/","title":{"rendered":"Debugging with Xdebug and PhpStorm on Uberspace"},"content":{"rendered":"<p>Until recently, I just used Xdebug for debugging PHP locally with XAMPP. But now I needed to debug a problem with PayPal in WooCommerce on a remote server. This post shows you how to get this working.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Installing Xdebug on Uberspace is relatively easy \u2013 running the following command does it:<\/p>\n\n\n<pre class=\"wp-block-code lang-bash\"><span><code class=\"hljs\">uberspace-install-pecl xdebug<\/code><\/span><\/pre>\n\n\n<p>My end of the <code class=\"lang-markup\">php.ini<\/code> with the Xdebug info looks like that:<\/p>\n\n\n<pre class=\"wp-block-code lang-bash\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">extension_dir = <span class=\"hljs-regexp\">\/home\/u<\/span>serName\/pecl\nzend_extension = xdebug.so\nxdebug.default_enable = <span class=\"hljs-number\">1<\/span>\nxdebug.remote_enable = <span class=\"hljs-number\">1<\/span>\nxdebug.remote_handler = dbgp\nxdebug.remote_host = <span class=\"hljs-number\">127.0<\/span><span class=\"hljs-number\">.0<\/span><span class=\"hljs-number\">.1<\/span>\nxdebug.remote_port = <span class=\"hljs-number\">9000<\/span>\nxdebug.remote_autostart = <span class=\"hljs-number\">1<\/span>\nxdebug.idekey = PHPSTORM<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Of course, maybe you have to adjust the values \u2013 at least the <code class=\"lang-markup\">userName<\/code>.<\/p>\n\n\n\n<p>My settings under <em>Languages &amp; Frameworks<\/em> \u203a <em>PHP<\/em> \u203a <em>Servers<\/em> in PhpStorm look like that:<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone size-full wp-image-4235\"><noscript><img decoding=\"async\" width=\"864\" height=\"357\" src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings.png\" alt class=\"wp-image-4235\" srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings.png 864w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-484x200.png 484w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-300x124.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-768x317.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-806x333.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-600x248.png 600w\" sizes=\"(max-width: 864px) 100vw, 864px\"><\/noscript><img decoding=\"async\" width=\"864\" height=\"357\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20864%20357%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-4235 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20864%20357%22%3E%3C%2Fsvg%3E 864w\" sizes=\"(max-width: 864px) 100vw, 864px\" data-srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings.png 864w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-484x200.png 484w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-300x124.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-768x317.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-806x333.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings-600x248.png 600w\" data-src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2017\/09\/phpstorm-php-servers-settings.png\"><figcaption>PHP servers settings in PhpStorm. (Screenshot: PhpStorm)<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><em>Name<\/em> and <em>Host<\/em> are the domain.<\/li><li><em>Port<\/em> is 80, <em>Debugger<\/em> is Xdebug.<\/li><li>Check the <em>Use path mappings<\/em>.<\/li><li>For the local project path, set the equivalent absolute path on the remote server.<\/li><\/ul>\n\n\n\n<p>Before listening to Xdebug on the remote server, we have to set up an SSH tunnel to the remote server. Here you need to use the same port which is used in the Xdebug settings in PhpStorm and the <code class=\"lang-markup\">php.ini<\/code> (in my case, and I think that is the default value, 9000). That is the command to create an SSH tunnel:<\/p>\n\n\n<pre class=\"wp-block-code lang-bash\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\"><span class=\"hljs-selector-tag\">ssh<\/span> <span class=\"hljs-selector-tag\">-R<\/span> 9000<span class=\"hljs-selector-pseudo\">:localhost<\/span><span class=\"hljs-selector-pseudo\">:9000<\/span> <span class=\"hljs-selector-tag\">user<\/span><span class=\"hljs-keyword\">@server<\/span>.de<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>After that, you can start debugging. You can read how to set up an SSH tunnel on Windows with putty in the <a href=\"https:\/\/confluence.jetbrains.com\/display\/PhpStorm\/Remote+debugging+in+PhpStorm+via+SSH+tunnel\">Confluence of JetBrains<\/a>. The command above works for Linux, Mac, and the <em>Linux Subsystem on Windows 10<\/em>.<\/p>\n\n\n\n<p>Thanks to <a href=\"https:\/\/twitter.com\/lukasleitsch\">Lukas<\/a>, who helped me get this thing working \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Until recently, I just used Xdebug for debugging PHP locally with XAMPP. But now I needed to debug a problem with PayPal in WooCommerce on a remote server. This post shows you how to get this working.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpf_show_in_dewp_planet_feed":false,"flobn_post_versions":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"lazy_load_responsive_images_disabled":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-4234","post","type-post","status-publish","format-standard","hentry","category-tips"],"wp-worthy-pixel":{"ignored":false,"public":null,"server":null,"url":null},"wp-worthy-type":"normal","_links":{"self":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/comments?post=4234"}],"version-history":[{"count":2,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4234\/revisions"}],"predecessor-version":[{"id":5848,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4234\/revisions\/5848"}],"wp:attachment":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/media?parent=4234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/categories?post=4234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/tags?post=4234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}