Symfony 3: Debugging with Symfony's development server - php

During the development on a Symfony 3.3 project I use the Symfony's internal server as seen there But I cannot figure out how to use the xdebug in order to debug it. I mean I have installed and configured xdebug via:
apt-get install php-xdebug
And I export:
export XDEBUG_CONFIG="idekey=phpstorm"
But when I put a breakpoint to my IDE and I enable the xdebug via that plugin I still get no response.
Also I have put the following settings on /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9021
xdebug.remote_mode=req
And I have configured both PhpStorm to listen over port 9021. But I still get the problem that I cannot make PhpStorm to listen over a breakpoint.
Do you fellows have any sort of idea how I can fix that over my ubuntu-16.04 machine?
Furthermore I have looked on these questions without any success:
Xdebug configuration with PHP fastcgi and eclipse?
Is it possible to use Xdebug with the built in PHP test server?
EDIT 1
I also tried to export the following:
export XDEBUG_CONFIG="idekey=PHPSTORM"
An configuring the Firefox plugin but still get the very same behaviour. Also keep in mind that I made the PhpStorm to listen over xdebug by pressing the button.
EDIT 2
I also put the following configuration over my PhpStorm:
Still does not work.

In the end the following steps are needed:
Put the following content into: /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9021
xdebug.remote_mode=req
Export:
export XDEBUG_CONFIG="idekey=PHPSTORM"
Then configure PhpStorm as the image shows.
Set as IDE key PHPSTORM into the Firefox plugin
Enable xdebug on Firefox via pressing the button. Alternatively you can append the url with ?XDEBUG_START part
Then press the button in PhpStorm. In case you see the then press it back again.
NOTE:
In case you change xdebug settings TERMINATE the xdebug session by pressing button and pressing back again.
Furthermore in case you run composer via terminal disable PhpStorm to listen xdebug by pressing button.

Related

Trying to install Xdebug on my remote server with PhpStorm

I have a remote machine where runs an Apache Server. I want to use Xdebug on my local machine, using PhpStorm, to debug the PHP files located in my remote server.
Here is what I did on my remote Ubuntu server :
1. apt-get install php7.2-xdebug
2. Go to /etc/php/7.2/apache2/php.ini and add :
[xdebug]
zend_extension=/usr/lib/php/20180731/xdebug.so
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_host=<my local machine IP without braces>
xdebug.remote_log="/var/log/xdebug.log"
xdebug.idekey=PHPSTORM
3. Restart Apache server /etc/init.d/apache2 restart
4. When I create a script with echo phpinfo(); in it, it shows that Xdebug has been installed "correctly" (I guess) : it shows an Xdebug section with all the variables.
5. In PhpStorm, I set a breakpoint on a file, and I start listening to incoming debug sessions, I verify this by doing a netstat query that returns that my Mac has its process PhpStorm listening to port 9000
6. In Chrome browser, I download the extension Xdebug, and I open my script, where I added the breakpoint. The mapping between this file that I open in Chrome and the local files is correct.
7. I tap the button "debug" in the Chrome extension, it becomes green. I verified, the cookie is correctly sent as http headers has XDEBUG_SESSION=PHPSTORM
Despite all of this, I cant achieve to have any incoming session on PhpStorm.
I tried to see file /var/log/xdebug.log that I registered to be the log file of Xdebug, but this file is empty....
Did I forget something ? I have no idea what to do its been 8 hours I'm on it I have seen all post related to it on StackOverflow but nothing worked for me (I can't even manage to have something in /var/log/xdebug.log so I could see deeper what's going on). I have no idea if Xdebug is doing something when it receive my HTTP request.
you phpstorm'configure is maybe error.

How to establish a PHP debug session using dbgp (Xdebug) and gedit?

I need to debug my Laravel application and as I searched Xdebug seemed to be the best option out there. Up to now I couldn't setup a session to the debug my app and I'm confused about how to configure the ambient.
So I run my Laravel app with:
php artisan serve --port=8001
According to my php --ini, the conf file for xdebug is:
$ php --ini | grep xdebug
/etc/php/7.2/cli/conf.d/20-xdebug.ini
which contains:
$ cat /etc/php/7.2/cli/conf.d/20-xdebug.ini
[xdebug]
zend_extension=xdebug.so
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.idekey=default
and to debug it on gedit, I've installed this plugin. And in the text editor settings for dbgp:
Can anyone explain to me exactly how this protocol works? If I click "start to listen to debug sessions" it tries to open one on port 8001 (not 9000) which is already in use and of course it cannot open and if it's the case that I must start my PHP app in conjunction with Xdebug then how do I setup it to run it with the default Laravel command (php artisan serve)?
And, if I click Start debug in Picture related, it opens in the browser with the exact URL http://127.0.0.1/?XDEBUG_SESSION_START=default (in port 80)

Using xdebug with PhpStorm

I can't get my PhpStorm IDE to work with xdebug.
My current setup is the following:
PhpStorm 2017.1.4
MacOS Sierra 10.12.5
Here are the steps that I followed.
I have installed php with the following command. I have added the postgres parameter because I need it later to connect to a PostgreSQL database.
brew install php71 --with-postgresql
The next step is to install XDebug with the following command
brew install php71-xdebug
So the next step that I got from the documentation (https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html) is to edit the php.ini file with the following content:
[Xdebug]
zend_extension="<path to php_xdebug.dll>"
xdebug.remote_enable=1
xdebug.remote_port="<the port for Xdebug to listen to>" (the default port is 9000)
xdebug.profiler_enable=1
xdebug.profiler_output_dir="<AMP home\tmp>"
Just some questions about those fields and XDebug.
So I guess XDebug is some kind of service that runs on the remote_port and that PhpStorm is using to write data to? Or do you have to specify the port where the application you want to test is running?
What exactly is the profiler thing? And can the output dir be anything I can choose?
So this is my php.ini file that I think it should be:
[xdebug]
zend_extension="/usr/local/Cellar/php71-xdebug/2.5.4/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/usr/tmp"
That's it for the php.ini. So I have to check the settings in my PhpStorm IDE. And those are the following:
So that is my setup. In my project I just have one index.php with <?php echo phpinfo(); ?> I just click the Chrome icon so it opens directly in the browser to check if XDebug is there. I see the following result.
So I thought to myself ok let's try some debugging. So I changed my index.php file to the following
$i = 2;
$j = $i + 2;
echo $j
I've put a breakpoint on the 2nd line. And when I run it, it never stops at the breakpoint. What is needed to do that or am I wrong in my configuration somewhere?
To make Xdebug remote debugging working on your page, you need to set a cookie in your browser, telling the server you want to debug the page, there are many extensions for that, the most known is Xdebug helper in Chrome.
I also suggest you to follow this tutorial Zero-configuration debugging, it is very detailed and clear IMO.
If you still have problems i'll try to help you with pleasure :)

Configuring Xdebug for using zero-configuration debugging in Intellij

I'm using Intellij IDEA 2016.3.3 with the PHP-plugin of PhpStorm in Linux Mint 18. I try to configure Xdebug for using zero-configuration debugging. I followed the official guide and this video tutorial. However, the debugger does not stop at any breakpoint.
/opt/lampp/etc/php.ini (extract)
[Xdebug]
zend_extension = /opt/lampp/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
xdebug.default_enable=1
xdebug.idekey=Intellij
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
I generated Xdebug & Zend Debugger bookmarklets with IDE key Intellij.
Workflow:
Intellij: Run > Start Listening for PHP Debug Connections
I open a PHP-file of my PHP-project in Intellij that I'd like to debug.
I add a breakpoint
I open the file in the browser by clicking on the Google Chrome icon in the top-right corner
I click on the Start debugger bookmarklet in Google Chrome
I reload the page
I expect the debugger to stop at the breakpoint, but it doesn't
I'm not sure what I did, but it suddenly works. I did a restart of Intellij and now it works. I guess that I only did a reload of php.ini in the PHP settings after a relevant change of php.ini, but that didn't affect the build in web server.
#LazyOne Thank you very much for your help and patience.

Debug VM with xDebug and PhpStorm

My work setup is a Windows XP host, running an Ubuntu VM LAMP stack. I am using PhpStorm to edit my code on my host Windows machine. Upon saving files are automatically uploaded to the VM via SFTP. Everything works for this process, except debugging.
I have setup PhpStorm to have a server named "UbuntuVM" with the following settings:
Debugger:
- XDebug
Debug session settings:
- Break at the first line
- Wait for connection with ide key: XDEBUG_PHPSTORM
Before launch:
- Upload files to selected server
I am using Chrome with Xdebug Helper, and have set the extension to use "Other" as the IDE, with "XDEBUG_PHPSTORM" as the key.
The VM has the following in the php.ini:
zend_extension="/usr/lib/php5/20090626+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=10.1.6.22
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.collect_params=On
xdebug.show_local_vars=On
When I set a break point in my IDE, enable the debugger in Chrome, and reload the page, I never hit the break point; and the IDE says "Waiting for connection on port 9000 with ide key 'XDEBUG_PHPSTORM'".
Does anyone have any idea why I'm not hitting my break points?
Comes to find out that xdebug.remote_host isn't needed, rather, use xdebug.remote_connect_back=1.

Categories