PHP Remote Debugging using XDebug - php

I've got a lot of questions about how to debug php-files with xdebug and eclipse on a remote server.
What I would like to achieve is:
I have a remote server (with WAMPP (appache (Port 8502), php, mysql (Port 8501), etc)) and I would like to debug the php-files with Eclipse PDT from my local PC.
I prepared the following things:
Installed Eclipse PDT (Build id:
20100617-1415) on my local PC
Installed and activated xdebug on the
remote server (available at (lets
say) 111.111.111.111:8502) with the
following configuration within the
php.ini
[XDebug]
zend_extension = C:\TYPO3_4.4.6\php\ext\php_xdebug-2.1.0-5.3-vc6.dll
xdebug.profiler_output_dir = "C:/xampp/tmp/xdebug"
xdebug.profiler_output_name = "cachegrind.out.%p"
xdebug.profiler_enable = 0
xdebug.profiler_append=0
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=ECLIPSE_DBGP
xdebug.remote_log="C:\TYPO3_4.4.6\tmp\xdebug\xdebug_remote.log"
xdebug.show_exception_trace=0
xdebug.show_local_vars=9
xdebug.show_mem_delta=0
xdebug.trace_format=0
In Eclipse I added the server in
"Window - PHP - PHP Servers" with the
URL "http://111.111.111.111:8502" and
the Path Mapping - Path on Server:
"C:\TYPO3_4.4.6\htdocs" and Path in
Workspace: "/debug_test" (I created a
PHP Project named "debug_test").
I also changed the PHP - Debug to the following:
PHP-Debugger: XDebug
Server: 111.111.111.111
PHP Executable None Defined
Next I added the debug configuration (PHP Web Page):
Server Debugger: XDebug
PHP Server: 111.111.111.111
File: /debug_test/debug.php
Break at first line: off
Auto Generate: on
I created the file debug.php on the Remote Server at C:\TYPO3_4.4.6\htdocs\debug_test\ and within my PHP Project ("debug_test").
If I now run "Debug" and choose my Configuration File, the Webpage pops up (in an external browser) with the URL http://111.111.111.111:8502/debug_test/debug.php?XDEBUG_SESSION_STOP_NO_EXEC=ECLIPSE_DBGP&KEY=129657398681515 and the page is (fully) loaded as a normal page, but there is no way to debug it. Even If I switch to the PHP Debug - View and insert any breakpoints or things like this, there is nothing like debugging.
How do I get to the point that I can do remote debugging with xdebug and eclipse pdt?
Cheers,
Cheeesi

are you sure that your XDebug-Client / PC can be reached by 127.0.0.1 from your server?
B/c if I understand you correctly the your server is not installed on your PC. OTOH then I'm wondering about how you set up ypur XAMPP-system. B/c then usually all your stuff is locally installed.
Also the Browser's behaviour is important. If after invoking an XDebug-session through Eclipse your site is fully loaded, then your XDebug-Client in Eclipse couldn't reach your server. If you see your browser trying to load the page but it's stalling, then your client could tell the server to start an XDebug-session but your XDebug on the server couldn't connect back.
Your port 8502 that you specify for your server is also bit odd, but could be correct, given the corresponding configurations.
Best regards
Raffael
EDIT: and for a first try you should enable break on first line

Related

Windows 8, Phpstorm 8, PHP 5.5 Xdebug not hitting breakpoints

I have recently bought a new computer. Previously I was running Windows 7 and PHPStorm 8 with PHP 5.5 (From WAMPServer) with XDebug 2.2.5. Everything was fine with this.
I am now on a new computer (Windows 8) with PHPStorm 8 and I cannot get XDebug to work correctly. I have not installed WAMPServer, but instead simply "lifted out" the PHP from my old hard disk. Maybe I should do this, but I wanted to avoid having the Apache server and MySQL as I don't want/need them on this computer.
Both installations (old and new) simply used the PHP Built-in web server for testing/debugging applications with.
I have been searching on Google and not found anyone else with a similar problem to mine neverless I have tried using multiple different snippets of configurations.
What happens
In my index.php I have added a phpinfo statement followed by die to simply spit out the PHP info and stop the application. I have put a breakpoint on the phpinfo line, and am expecting the IDE to pause here.
If I do Run > Debug > index.php (which launches a command line PHP session and simply executes index.php as a console app, the IDE does as expected and pauses at my breakpoint.
If I "Run" the Built-in web server, and hit localhost/index.php the IDE does not pause at my breakpoint although it does output the phpinfo.
It is behaving as though I have not pressed the telephone icon in PHPStorm, even though as I described in the console route it does pause at the breakpoint.
I confirm that the phpinfo output does indicate the XDebug is enabled and does reflect the settings in php.ini
php.ini extract
zend_extension = "c:/php/5.5/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"
[xdebug]
xdebug.remote_enable = on
xdebug.remote_host = 127.0.0.1
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/php/tmp"
xdebug.show_local_vars=0
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM
xdebug.remote_mode=req
xdebug.remote_handler=dbgp
xdebug.remote_connect_back=0
xdebug.remote_autostart=0
xdebug.remote_log="C:/php/xdebug.log"
phpinfo output:
http://i.stack.imgur.com/hV8Rk.png
http://i.stack.imgur.com/GPf4o.png
I had even added in the xdebug.log bit to see what happens here, stopped and started the PHP Web server and tried the index.php call again, the log file was not created, so I have created it manually and granted full permissions in Windows. Tried the process again, and the file hasn't had any text added to it.
Text is added to the file, if I use that Run > Debug > index.php (console) route.
I think I am missing something ridiculous and obvious I just haven't a clue what it is.
Sorry for asking such a noob question, this is driving me mad!

No incomming connection from XDebug on Ubuntu VirtualMachine to PhpStorm on Windows host

I have a Win7 on my laptop and a VMware Machine running Ubuntu.
On the last one I have my LAMP configured and also a samba server in order to be able to share my projects to Win7 (mapping a drive).
I just installed xdebug through a package manager and done the following configuration in the php.ini:
extension=xdebug.so
[xdebug]
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable=1
xdebug.remote_connect_back=1
xdebug.remote_host=192.168.199.2 # this is my $_SERVER['REMOTE_ADDR']
xdebug.remote_port=9055
xdebug.show_local_vars=0
xdebug.var_display_max_data=10000
xdebug.var_display_max_depth=20
xdebug.show_exception_trace=0
Then I got through the following checklist:
confirm xdebug is installed using phpinfo()
got some marklets from here so I can easily send xdebug cookie
in PHPStorm->Settings->PHP->Debug I have set the 9055 port for xdebug
pressed the "phone icon" in PHPStorm in order to listen for incoming xdebug connection, and set debug key (same as the one sent by markets - 'xdebug')
moved to browser, accessed my script url, start a debug session using marklet (confirmed afterwords the presence of debug key in phpinfo())
marked a break point in my script
refreshed browser page
But nothing works for me.
Briefly, the fix for my problem was this:
enable xdebug.remote_log (where I could check for connection attempts and identify the exact IP to which xdebug was trying to connect) - [this was the key]
removed/set to 0 xdebug.remote_connect_back (because it overwrites remote_host with $_SERVER['REMOTE_ADDR'])
set the proper xdebug.remote_host
removed extension=xdebug.so an loaded xdebug using only zend_extension
So, every time, do not forget to check the logs if exists! :)
Thanks to LazyOne for very helpful hints!

netbeans shows "Waiting For Connection (netbeans-xdebug)"

I need help to configure xdebug, for debugging projects from IDE netbeans.
These are the features of my components:
XAMPP 1.8.2
PHP: 5.4.16
netbeans: 7.3.1
Apache: 2.4.4 (Win32)
this is the final part of my php.ini file:
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9-nts.dll"
;xdebug.profiler_append = 0
;xdebug.profiler_enable = 1
;xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
;xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
;xdebug.trace_output_dir = "C:\xampp\tmp"
when I run phpinfo(), there is no xdebug installed, and when I debug a project from netbeans, it says "Waiting For Connection (netbeans-xdebug)".
can someone help me to configure it?
Have you rectified the issue ? If not then please try this.
1.) php.ini file content
[xDebug]
zend_extension = "c:\xampp\php\ext\php_xdebug-2.2.3-5.4-vc9.dll"
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_enable=1
xdebug.remote_handler="dbgp"
;xdebug.remote_host="localhost:81"
xdebug.remote_host=192.168.1.5
;xdebug.remote_connect_back=1
xdebug.remote_port=9000
xdebug.remote_mode=req
xdebug.idekey="netbeans-xdebug"
xdebug.remote_host=192.168.1.5 - This is the IPv4 address of my system, I changed to this because I couldn't debug with localhost and 127.0.0.1.
in NetBeans IDE, open Tools-> Options -> PHP -> Debugging. The values of debugger port and Session Id should match with the port and idekey specified in php.ini.
Now save php.ini, restart Apache and try to debug.
Thanks Johnson
When Netbeans starts a Debugging session, it starts two Listeners, one on 0.0.0.0:9000 (all IPv4 IPs the system has), and the other on the IPv6 interface.
If Netbeans and the Web Server are on the same system, ideally XDebug would be configured to send the data back to 127.0.0.1:9000, on which NetBeans would be listening on (and only per session)...
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_autostart=0
xdebug.remote_connect_back=0
If for whatever reason XDebug is not able to report back to 127.0.0.1, or Netbeans is not listening on 127.0.0.1, you can configure XDebug to send the data back to the $_SERVER['REMOTE_ADDR'] of the original request...
xdebug.remote_connect_back=1
This way you don't have to specify the exact IP (i.e., as in the above answer the LAN IP: 192.168.1.5). The downside here is that any source can connect.
If you have further trouble, this...
xdebug.remote_autostart=1
... will also start the debugging process for all requests, and not just for the ones with the proper session start query or cookie. The downside here is that all requests will initiate debug data collection and reporting back (making everything slower, and generating more data).
Though from what I've gathered, the majority of these "Waiting For Connection (netbeans-xdebug)" issues on Windows (with XAMPP, Wamp-Server, etc) are usually a result of Windows Firewall and McAfee (or other firewall and anti-virus software) blocking the connection...
Source: Netbeans "Waiting For Connection (netbeans-xdebug)" Issue
I am a .Net programmer and very new to PHP.
Recently I was trying to host an open source PHP application on my machine(Windows). After the Struggle for 5-6 days I will list the steps which worked for me.
I uninstalled every previous installations of XAMPP and NetBeans and proceeded with fresh installations.
This might not be the solution for everyone but it worked for me and I hope it helps someone.
install XAMPP
install netbeans for PHP.
Open IIS and stop it. It is running on port 80 by default.(I am running XAMPP on port 80 i.e. default, Running on other port might need additional configuration settings)
Open XAMPP control panel and start Apache. If port 80 is free no problem should arise.
Open localhost in browser in should display XAMPP home page.
open phpinfo() link on the left pane and copy all the contents on page.
Go to: http://xdebug.org/wizard.php and paste all the content in TextBox and click Analyze my phpinfo output. It will diplay you the Xdebug file suitable for your configuration.
Download the given Xdebug dll and copy it in C:\xampp\php\ext (Xampp being the default Xampp installation directory)
Goto XAMPP control panel, click on Config button in front of Apache and select php.in,
Find line similar or exacly like,
;zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
(Semicolon means it is commented)
Remove the semicolon and replace the path with the path of dll you just copied like:
zend_extension = "C:\xampp\php\ext\php_xdebug-2.3.2-5.4-vc9.dll"
Similarly find lines
;xdebug.remote_enable = 0
;xdebug.remote_handler = "dbgp"
remove semicolons in front of both lines and make remote_enable = 1
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
Restart Apache server.
Copy your website code under C:/XAMPP/htdocs/(your_website)/
that means your index.php should be at C:/XAMPP/htdocs/(your_website)/index.php
Open Netbeans select New project -> PHP -> PHP project from existing source and select the folder you just copied in htdocs folder.
Set it to run on Local web server.
Set a breakpoint on first line of index.php and debug.
That's it.
Additional settings were suggested on various different posts but above mentioned steps worked perfectly for me.
I want to mention something here about xdebug.remote_host
xdebug.remote_host="127.0.0.1"
Is Not valid. It may work in some cases, but the quotes can also cause issues. Most people don't have issues when using IP addresses in quotes, but this sets a bad precedent. It makes people think that if you want to use a hostname or URL you need to put it in quotes. This is incorrect, urls in quotes will not work.
If you want to debug using a url, you can do this by just putting the url after the equals like this:
xdebug.remote_host=subdomain.mydomain.com
I also want to mention that if you have a port number, don't add it. This doesn't work:
xdebug.remote_host=subdomain.mydomain.com:9000
This is what you want to do:
xdebug.remote_host=subdomain.mydomain.com
xdebug.remote_port=9000
If you do this, I also caution you make sure remote_connect_back is disabled. Like this:
xdebug.remote_connect_back=0
or you can ommit it entirely, like this:
;xdebug.remote_connect_back=1
If remote_connect_back is enabled, it will try and pull your IP address from the incoming connection and ignore the remote_host and port setting.
Xdebug uses plain old TCP to make connections. This is not HTTP. This means tools like Fiddler will not show any packets or information on debugging. If you need to debug, and see if the server is making a call to your IDE there are a few ways you can go about checking.
Wireshark will allow you to see TCP traffic. Also if you are on Windows, Microsoft Message Analyzer can also monitor TCP.
But, if all you are trying to do is remove your IDE is a possible cause of remote debugging problems, I suggest instead you start a local TCP server.
This is a great free java program to start a TCP server: http://sockettest.sourceforge.net/
In the IP Address section, just list 127.0.0.1 or leave it at 0.0.0.0. Then list the port number, which is usually defaulted to 9000 for xdebug.
Once the TCP server is running, open your remote webpage with an xdebug_break(); function call in it. This will tell xdebug on the remote server to start debugging on whatever server and port you listed in your php.ini.
Watch the socket server and see if you get a connection. The first data sent should look something like this:
<init appid="APPID"
idekey="IDE_KEY"
session="DBGP_COOKIE"
thread="THREAD_ID"
parent="PARENT_APPID"
language="LANGUAGE_NAME"
protocol_version="1.0"
fileuri="file://path/to/file">
If you have made it this far, remote debugging is working! Just stop the server and setup your IDE to listen on that port!
If you are like most of us, your developer machine is behind a router with NAT. This means that everyone in your office has the same public IP address. This is a problem because when xdebug contact that IP address to start debugging, it hits the router, and not your computer. The router can be configured to pass certain port numbers to individual computers, but you may not want to do that as that port will be open until you change your router settings back.
Another option is to use SSH. There is a great example of how to do this here: http://stuporglue.org/setting-up-xdebug-with-netbeans-on-windows-with-a-remote-apache-server/#attachment_1305
My preferred option is to use Ngrok. Ngrok is a great tool for redirecting http, https and TCP traffic. In order to use the TCP redirect function you need to sign up for a free account.
Once you have signed up for an account, and added your API key to your computer run this command on the computer that your IDE is on:
ngrok tcp 9000
This will open a tcp (not http) tunnel from the ngrok server to whatever machine you ran the command on. I am using port 9000, you can change this port if your IDE is configured for a different Xdebug port.
This is what you should see:
You will need to see what the url is for the TCP tunnel that was opened. In this example it is:
0.tcp.ngrok.io:14904
For this session, the Xdebug setting on your server should be this:
xdebug.remote_host=0.tcp.ngrok.io
xdebug.remote_port=14904
The URL and port will change each time ngrok is launched. If you want to have the same url and port, you have to upgrade to a paid account. Make sure to restart apache after you make changes to your php.ini.
I just spent hours reading so many answers on this page and others like it, and nobody mentioned what ended up being the solution for me:
Make Sure Your Chosen Port Settings Match in All 3 Locations
My problem was that there are THREE places that the chosen port needs to match. Two of mine said 9001 and one said 9000. I changed them all to 9000.
That was the problem and why Netbeans would only say “Waiting For Connection (netbeans-xdebug)”.
The 3 port setting locations are:
php.ini (xdebug.remote_port=9000)
project properties > Run Configuration > Advanced
Netbeans > Tools > Options > PHP > Debugging
Check also the "windows" firewall settings.
For me it doesn't worked because my LAN network was declared as "Public network".
After i switched it to "Work network" it worked fine.
Try this setting if you have latest version of Xdebug the old version syntax has been changed
https://xdebug.org/docs/upgrade_guide
xdebug.mode=debug
xdebug.start_with_request = Yes
;xdebug.mode=profile
;xdebug.start_with_request=trigger
xdebug.client_host = "localhost"
xdebug.client_port = 9003
xdebug.remote_handler = "dbgp"
xdebug.log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.trace_output_dir = "C:\xampp\tmp"
In my case the Apache log showed a PHP warning about not having set date.timezone. Xdebug/netbeans began working as soon as I set it in php.ini and restarted apache.
date.timezone = America/Los_Angeles
This is PHP 5.5.
I'm on Windows with xampp and changed the [XDebug] section of my php.ini (at the bottom) to the following to get it working:
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
Sourced from the Netbeans wiki here: http://wiki.netbeans.org/HowToConfigureXDebug
If you have Apache running, remember to restart it after configuring XDebug and saving php.ini.
Adding this did work for me:
xdebug.idekey=netbeans-xdebug
I my case if I add following in php ini it did not work
zend_extension_ts="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"
But If I add
zend_extension="C:\PHP\PHP560\ext\php_xdebug-2.4.0rc4-5.6-vc11.dll"
It is working fine.
Having correctly set up the php.ini file, netbeans, port forwarding on the router, I was still getting the wretched "waiting for connection (netbeans-xdebug). I eventually noticed on the netbeans page "Do not forget to set output_buffering = Off in your php.ini file".
So I checked the /etc/php/7.x/apache2/php.ini file and sure enough it's value was 4096. So I reset output_buffering=Off and lo it worked !!!
Hope this helps someone, as the message implies it is a connection error rather than a configuration error.
check this out: Launch XDebug in Netbeans on an external request
another way is to open a new window:
try to go on Project > run configuration > advance
and switch to default, check if it opens another window in the browser
A try could be to start php -i in command window. When redirecting the output an error was
For me it was the FINAL solution because I had a wrong version of Xdebug downloaded
For me it should have been : php_xdebug-2.1.2-5.3-vc6.dll
But I had: php_xdebug-2.2.4-5.3-vc9.dll. So an error occurred from php -i
E:\Programme\php>php -i > myOutputFromPhp
yields following ERROR
Cannot load Xdebug - it was built with configuration API220090626,TS,VC9, whereas
running engine is API220090626,TS,VC6
I had the same problem.
why?
First I installed WAMP, thank Netbeans and they work together as a charm.
Later I installed XAMPP and Localhost sites were run smoothly but NetBeans could never connect to XAMPP (netbeans-xdebug).
At the same time NetBeans were working good with Wamp.
My solution was to go back to Wamp. It is better than nothing.
My PC:
Win-7-32, NetBeans-8.0.2,
wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b
xampp-win32-5.6.8-0-VC11
For Ubuntu users:
sudo su
apt-get install php5-dev php-pear
pecl install xdebug
find / -name 'xdebug.so' 2> /dev/null
it will return something like: /usr/lib/php5/20121212/xdebug.so
vi /etc/php5/apache2/php.ini
add this line: zend_extension="/usr/lib/php5/20121212/xdebug.so"
service apache2 restart
restart IDE
I spent a lot of time trying to get the optimal set up and thing this deserves its own reply, even though #Johnson T A's one it's almost correct.
He says
xdebug.remote_host=192.168.1.5 - This is the IPv4 address of my system, I changed to this because I couldn't debug with localhost and 127.0.0.1.
Well, not everybody can use a private address, or it may be dynamic, or other things. Also, in my case I was suffering from very long wait times before debugging actually started - 30 s or so every time. That was unpractical.
I'm sure everyone having these problems are at least on Windows 7 or so. The problem is related to a mix between name resolution and xdebug. To overcome them make sure that:
Port 9000 is not in use. If that's the case, change it to a unused one, both in php.ini and in netbeans.
Make sure that xdebug.remote_enableis on.
If you want to be able to debug using both localhost and 127.0.0.1 addresses, open \Windows\System32\drivers\etc and make sure that there you have the following lines:
127.0.0.1 localhost
::1 localhost
Make sure that the first line doesnt have a # before it and the second one does have it.
My working php.ini section (I don't need profiler so I disabled it):
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.remote_enable = on
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "localhost"
xdebug.remote_port = 9001
xdebug.trace_output_dir = "C:\xampp\tmp"
xdebug.remote_log = "C:\xampp\tmp\xdebug\xdebug.log"
xdebug.idekey = "netbeans-xdebug"
xdebug.remote_autostart = on
xdebug.remote_connect_back = on
Stop netbeans debugger. Restart Apache.
I bet you won't suffer from long waiting times anymore nor strange behaviour with debugger.
Explanation:
Althought in etc/hosts they say "localhost name resolution is handled within DNS itself", for whatever reason it doesn't work well with xdebug if you don't have it explicitely stated in that file. Explicitly putting it seems to do no harm overall, and solves this problem with xdebug. But also you need to explicitly disable the sIPv6 short notation for localhost (::1) in order for all this to work. Don't know the internal reasons but triead all the combinations and this one works for me like a charm.
I had this issue for one project, but not for others. So xdebug was correctly configured, the project settings were ok, but it still did not work.
So I just deleted the nbproject subdirectory, containing the project settings, and created a new project with the existing source. This solved the issue for me.
Select a specific browser for debugging:
Right Click on project -> select Properties
Select categories: Browser then selected a specific browser for debugging
If your xdebug is not working correctly, check your server log:
$ sudo less /var/log/httpd/error_log
To check connections, use this command:
$ sudo netstat -an
After starting debug on netbeans, if you use the netstat command, you can see the port of xdebug (probably it's 80):
tcp6 0 0 192.168.33.10:80 192.168.33.2:49901 ESTABLISHED
The port of netbeans is 9000:
tcp 0 0 192.168.33.10:52024 192.168.33.2:9000 ESTABLISHED
You can change the xdebug's port from here (From the top menu, Tools -> Options -> PHP):
If the connection is not established, it is highly possible that your connection is blocked by your anti-virus program or firewall. You can check it in your anti-virus program or firewall and remove the block as it is a safe connection.
After you make changes to your php.ini or xdebug.ini files, regardless of how you're running your web server, make sure to restart that web server (for example: service httpd restart on CentOS) or Apache will not pick up the changes you've made to that .ini file.
The xdebug package on CentOS is "phpXXu-pecl-xdebug".
Defaults on most recent Xdebugs are usually fine. It's only strictly necessary to get these two values right, somewhere in an Apache .ini file:
xdebug.remote_enable=on
xdebug.remote_host=[DNS entry that resolves to the IP4 of your debugger]
I had the same problem and tried to solve it for hours. I finally found out that the chrome extension ipflood which changes the headers to make it look like you are using a proxy, was the cause.
It works perfectly fine after I disabled it!
Also, consider whether the NTS or the TS version of xdebug is suitable for your case.
Check the Apache log for hints
For Windows users this is what worked for me:
Obtain your phpinfo() output and copy it here: https://xdebug.org/wizard
It will tell you what is the exact dll you have to download.
Copy that dll into C:\xampp\php\ext, and rename it to php_xdebug.dll
Pay attention at the version of xdebug you have installed. That was the key for me! My version of xdebug was version 3 so I had to...
Update php.ini file to have the following (for xdebug v3):
[XDebug]
zend_extension = xdebug
xdebug.mode=debug
xdebug.client_host=localhost
xdebug.client_port=9000
xdebug.idekey="netbeans-xdebug"
Restart Apache Webserver and Netbeans.

Trouble shooting PHPUnit xdebug remote debugging with PHPStorm

I am trying to get Xdebug remote debugging to work, I am using PHPStorm as my IDE.
My webserver/code is hosted on a remote machine (amazon ec2).
I have the following lines in my php.ini on my remote server (PHP CLI since I am doing PHPUnit debugging)
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = dbgp
xdebug.remote_mode = req
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
Since I am programming from my home network, I opened port 9000 on my personal router.
I have PHPStorm's xdebug server set to point to the remote server on port 80 with Xdebug as it's Debugger.
Now when I try to debug a PHPUnit test from PHPStorm it just says
'waiting for incoming connections with ide key '12115'
Except, it picks a random ide key every single time (I want to hope that PHPUnit is setting the idekey on the server itself)
I have been trying to get this to work for over 10 hours, I have tried defining my a specific remote_host in the php.ini instead of using remote_connect_back but that also did not work. I have tried setting an idekey in php.ini and that did not work as well.
Is there anyway to confirm that Xdebug is working as intended on the webserver side? How can I test my Xdebug settings without using Phpstorm, I don't know if it is a connection issue between my home network and the remote server or what.
Any guidance to help narrow down the issue would be great.
I know that the question is a little old, but since I had the same problem and just found a solution, I have decided to post here for anyone interested.
My solution is heavily based on the one provided by Rafael Dohms in
his blog post entitled: Debugging PHPUnit Tests in NetBeans with
XDebug
Environment
IDE: PHPStorm 6.0.2
Server: WAMP Server (32-bit & PHP 5.4.3) 2.2E
XDebug: 2.2.2
XDebug
zend_extension=c:\wamp\bin\php\php5.4.3\ext\php_xdebug-2.2.2-5.4-vc9.dll
xdebug.extended_info=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log=c:/wamp/tmp/xdebug/xdebug_remote.log
The above configuration parameters go into the "php.ini" file for CLI. For the default WAMP installation, the full path to this file is: C:\wamp\bin\php\php5.4.3\php.ini
PHPStorm
First of all, you must create a "Server Configuration" (google "Creating a Server Configuration - JetBrains" for the official doc on the subject) specifying "Xdebug" as the "Debugger".
Then, create a new "PHP Remote Debug Configuration" (google "Creating and Editing Run/Debug Configurations - JetBrains" for the official doc on the subject) specifying the following values under the "Configuration" section:
Servers: the server created above
Ide key: PHPSTORM
Now, select that configuration and press the "Debug" button (or "Shift + F9"). PHPStorm will display the "Debug" panel and show the message: Waiting for incoming connection with ide key 'PHPSTORM'
Finally, "run" you PHPUnit test. There are several ways. One of them is:
Right click the name of the file the PHPUnit test resides in.
Select "Run file name"
That's it! XDebug will take control from here on.
If you're running Xdebug 2.2.0RC1, then the remote debug-log (http://xdebug.org/docs/all_settings#remote_log) will tell you succeeded and failed connection attempts. That might pinpoint whether the problem is on the Xdebug side, or phpstorm side.
In my case, the problem was that I had the xdebug config in /etc/php/fpm/php.ini, but php-cli uses /etc/php/cli/php.ini.
Since it took me a day to get it to work, I will sum up, what in learned:
Make sure, you are changing the right php.ini, XAMPP uses another php.ini and php version, than the one preinstalled on OS X Mavericks.
Define a logfile and if nothing is written into it, you a changing the wrong php.ini
In phpstorm you can validate your server connection and gain insight, if you are working on the right php.ini or what is still wrong.
You have to change settings for debug (might be worth to change the port to 9001), the server, all in phpstorm preferences and set up.
You have to set the php language level and the Interpreter (use the one your Apache mysql php configuration uses) e.g. /Application/XAMPP/xamppfiles/bin, click on ... to see Php and if debugger is attached. You might have to use another version of xdebug.
In Servers you have to define Host as
http://yourdefinitionofprojectonlocalhost
with usually Port 80 and Xdebug. Here it is essential to validate the remote environment.
Under debug you can set the Debug Port, if you change it to 9001, change it in the php.ini too, choose Can Accept external Connections.
If you do not enable Start to listen for PHP Debug Connection, you have no hope of getting it to work (Icon in upper right corner or down in Run menu).
In Edit Configurations... you have to define a PHP Web Application to be able to use Debug in the Run menu.
It took me a day to get it to work. The main issues being editing the wrong php.ini (do not forget to restart apache after edit) and the fact, that xdebug did not work with the php version.
As you can see I tried a lot of options in my php.ini and ended up using version of xdebug in found in my mamp directory:
;zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
zend_extension="/Applications/MAMP/bin/php/php5.5.10/lib/php/extensions/no-debug-non- zts-20121212/xdebug.so"
[xdebug]
;xdebug.var_display_max_children = 999
;xdebug.var_display_max_data = 99999
;xdebug.var_display_max_depth = 100
;xdebug.remote_enable = 1
;xdebug.remote_port=9001
;xdebug.profiler_enable=1
xdebug.remote_connect_back=0
;xdebug.remote_handler=dbgp
;xdebug.remote_host=localhost
;xdebug.profiler_output_dir=/Users/mypath/tmp
xdebug.remote_log=/Users/mypath/xdebug.log
;xdebug.remote_mode=req
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
Wish you more speedy success than I had.
In my case, it started working when I changed the port to something other than 9000.
Phpstorm's phpunit command was now:
/usr/bin/php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9002 -dxdebug.remote_host=10.0.2.2 /var/www/application/vendor/phpunit/phpunit/phpunit --bootstrap /var/www/application/tests/Bootstrap.php --configuration /var/www/application/tests/phpunit.xml <testfile> --teamcity

Getting Notepad++ DBGp XDEBUG plugin to work on Windows 7 to remote server

I'm current running Notepad++ on windows 7 as my primary coding environment. I'm currently looking to debug PHP using the xdebug plugin for Notepad++, DBGp.
Xdebug is set up on the remote server just fine (it's a Ubuntu 10.04 LTS server running apache2 and PHP5). A colleague of mine is running Eclipse on SUSE linux and has Xdebug working just fine on it. However, no matter what configs I try I can't seem to get Xdebug working for me on Notepad++.
I have tried the following guides to get this working with no joy:
http://amiworks.co.in/talk/debugging-php-using-xdebug-and-notepad-part-i/
http://forum.uniformserver.com/index.php?showtopic=1354
http://www.judiwa.com/2010/03/27/how-to-setup-bdgp-debugger-in-notepad-to-debug-php/
http://lamp-dev.com/php-debugging-with-xdebug-dbgp-and-notepad-windows/35
The main problem with these guides seems to be that they assume people are running a local development environment, which I am not.
My current settings for the DBGp plugin are:
remote server IP: {the server IP}
IDE KEY: xdebug
Remote Path: file://Z:/home/garryw/www/idp/650hoursSocialPortal/site
Local Path: Z:
I have also tried:
Remote Path: file:///home/garryw/www/idp/650hoursSocialPortal/site
with no luck either. I have tried so many combinations of Remote Path, Local Path etc... that I'm not sure what else to try now.
On the remote server xdebug is set to map to port 9002 for my user so in PuTTY I set localhost:9000 to map to {server IP}:9002 but this also had no affect....
I'm now incredibly frustrated and can think of nowhere else to turn to for advice... Any suggestions?
I had the same problem.
When I added the xdebug.remote_connect_back = 1 variable in the file / etc/php5/apache2/php.ini worked.
; xdebug configuration starts
zend_extension="/opt/packages/xdebug-2.2.4/modules/xdebug.so"
; Remote settings
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_log=/tmp/xdebug.log
xdebug.remote_connect_back=1
; xdebug configuration ends
You need to setup your putty tunnel the other way around, there is a description here: http://drck.me/xdebug-fw-8r4
As long as your IP + IDEkey setting is correct, Notepad++ will capture the communication with XDebug and you can check it by clicking on the DBG button. If it is empty, you probably have an issue with the port or some other part of the Xdebug config. If it is not empty, you probably have wrong path settings - you can check the messages from Xdebug to see what path it sends. The correct setting is probably file:///home/garryw/www/ (remote) / Z:\home\garryw\www\ (local).

Categories