Can't get Xdebug to work on Windows 7 - php

I installed the latest XAMPP package which includes PHP 5.3.0. I am trying to enable Xdebug, but it just won't work.
Here's what I changed in the php.ini shipped with XAMPP:
; uncommented
zend_extension = "X:\xampp\php\ext\php_xdebug.dll"
; added the following lines:
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
Apache starts fine, but when I open http://localhost/ in my browser, I get the following error:
If I click the Close the program button, the error message will reappear in a second as if it was in an infinite loop. I'd greatly appreciate any help in getting this to work.
I am running a fresh install of Windows 7 Ultimate 64-bit.
EDIT:
From the result of phpinfo():
Zend Extension Build API220090626,TS,VC6
PHP Extension Build API20090626,TS,VC6
Debug Build no
Thread Safety enabled

It's possible you have the wrong version of Xdebug. I would take a look at phpinfo() and compare the information there to the different versions of the Xdebug dll.
Specifically, you want to see if "Thread Safety" is enabled, and you need to know whether you're running a VC6-compiled PHP or a VC9 (if you're using Apache, it's almost guaranteed that you want the VC6).

Have you tried custom installation wizard of XDEBUG, it analyses your php installation and provides exact steps you need to follow
The Windows binaries generally work for every mini release for the mentioned PHP version, although the extension is built against the most current PHP version at that time. The VCx marker tells with which compiler the extension was built, and Non-thread-safe whether ZTS was disabled. Those qualifiers need to match the PHP version you're using. If you don't know which one you need, please refer to the custom installation instructions.
http://xdebug.org/wizard.php
Just paste your phpinfo out put in the text box and you will get exact xdebug dll you would need for your php

frank-ly, I also had 2 REALLY bad days, and I don't now what finally fixed it,
so here's my collection of Do's and pitfalls:
; this is the thread safe version,
; the absence of _nts_ in the dll name 'shows' this
; do not use _ts, your library won't get registered and won't show in phpInfo()
zend_extension = "D:/wamp/bin/php/php5.3.8/zend_ext/php_xdebug-2.1.2-5.3-vc9-x86_64.dll"
check your php.ini, check phpinfo() if all values (arrive)
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
; if you have multiple virtual hosts ( like 'local.fooclient' )
; maybe using the IP is safer (for any same-machine-debugging)
xdebug.remote_host=127.0.0.1
; maybe a -much- lower port helped, 84 was free. use netstat to figure out.
xdebug.remote_port=84
; idekey! also see note below
xdebug.idekey=netbeans-xdebug
More Pitfalls:
I have seen a typo of xdebug.remote_handle (without r) several times on the web. beware.
A note on the idekey: The above idekey did show in phpinfo() as master value, BUT
was overridden with a 'local value' like MYMACHINENAME$. ==> Setting a global env var (in computer properties) named DBGP_IDEKEY and rebooting (or maybe just logging out) to (also) netbeans-xdebug helps! Again: re-check in phpInfo() it took effect.
Of course adjust netbeans-menu:options->php tab->debugging section to this port and session id.
Here is a script, to check (by php means) if that port you intend to talk to is open. (further below also in the comments, for those to lazy too type from the image)
For your browser to connect, don't start to forget (amidst frustration) to always attach the debug-starting get-argument:
http://localhost/myTest.php?XDEBUG_SESSION_START=netbeans-xdebug
On the port frontier, also this tool might help.
Quadruplecheck you are keeping VC6 and VC9 compiled versions of everything apart.
Running your whatever/path/php.exe myTest.php from the command line (once the above settings are done) might also reveal additional errors (it did, while I was tinkering with an incorrect dll).
I can recommend http://www.wampserver.com
(for personal reasons it fits me better than the popular xampp package...)

Yes, there is a known problem - is almost impossible to get Xdebug working with latest Xampp and 64-bit Vista/Win 7.
There is a bug reported with many users complaining about it.
The solution seems to be latest beta version on Xampp. It includes version 2.0.6 (dev) of xdebug and it is working just fine.
I tested it on 64-bit Vista for approx 10 days and not encountered any problem yet.

When xdebug is installed not with XAMPP, just with PHP (32bit, TS, VC6, in C:\Program Files (x86)\PHP) and Apache (32bit) on Windows 7 (64bit), in php.ini you need to specify the full path to x86 folder of Program Files like.
zend_extension="C:\Program Files (x86)\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"
and NOT
zend_extension="C:\Program Files\PHP\ext\php_xdebug-2.1.1-5.3-vc6.dll"
This was my mistake, when changed to x86 folder, xdebug started to work perfectly. Hope this help you, too.

Like others have said, you need to match your xdebug version with your php version.
You've already matched up PHP version number, thread safety, and compiler.
If you haven't already figured it out (this is an old thread), what you're missing is the INI configuration. If you are loading a module that's thread safe, you need to use the following line:
zend_extension="C:\Path\To\The\Extension.dll"
If the module is not thread safe, then you use the INI directive you've been trying to use.
This only applies to zend_extension's and not regular extensions.

Related

Xdebug configuration

I am new to php and I need to use Xdebug with netbeans for a remote school purpose.
My php's version is 7.3.21 and I am using it with Wamp. Netbeans is on 11.1 version.
I installed last updates for wamp and xdebug, and the problem is when i run debugger in netbeans, xdebug doesn't load and keeps this status running :
So I investigated and xdebug seems installed as you can see here (from click on wamp -> php -> configuration) :
and here (from click on wamp -> php -> extensions) :
Everything seems ok, but still doesn't work. So I check on https://xdebug.org/wizard with phpinfo() function, pasted the return in the textarea and here's the status :
I check everything and here is my php.ini file :
In this context, using the debugger shows me infos on a html page as you can see on following image but I can't inspect my variables in netbeans because of the "waiting for connection (netbeans-xdebug)...
I tried to use "localhost" instead of my IPv4 address, and "ext" instead of "zend_ext" but the html page doesn't provide me anymore informations.
Moreover the weird thing is that when I copy-paste a php -i result in the textarea from https://xdebug.org/wizard, it tells me that xdebug isn't installed .....
I checked and tried many posts' solutions from stackoverflow, but nothing is working, I don't know what to do more, so if any of you guys could help me it would be highly appreciated.
Thank you
Edit: Thank you Arsen for the answer, I tried both of your suggestions and followed the upgrade guide but none is working . Here is my php.ini file which I modified that much that I can't even get back to the base configuration..
Should uninstall wamp and install it again ?
I have a 5.6.40 php version and the preinstalled xdebug 2.5 version is working in netbeans.
The problem is that I will have to modify an app written with php 7 and use phpUnit / phpDocumentor / codeSniffer. Do you think that working with e 5.6.40 php version would be fine ?
Again, I am new to php / wamp and all the related stuff, sorry if my questions are "stupid".
XDebug 3 is still pretty new and it appears your xdebug-configuration in your ini-file is still using the config names for XDebug 2. Luckily, XDebug provides a upgrade guide, which you should adjust your config according to.
My first guess is that you are using the wrong port, because XDebug 3 is using port 9003 by default and you are expecting port 9000 in NetBeans.
So you can either:
Listen on port 9003 in NetBeans or
Set xdebug.client_port to 9000 in your ini-file. (Rather than xdebug.remote_port, see the upgrade guide Ilinked above)
Keep in mind that you should go through the upgrade guide for all your configuration settings to ensure that XDebug is actually doing what you want it to.

How to enable oci in xampp 5.6.3?

I am facing some issue while starting Apache server via XAMPP. I have installed XAMPP Version 5.6.3.
When I start the Apache server from xampp control panel, an error message is displayed as shown below:
On clicking 'OK' button, another dialog box is displayed as shown:
The thing is I wanted to use OCI instead of mysql. so I have commented out the mysql extensions and uncommented the OCI extension in php.ini file.
The php_oci8_12c.dll file is the only file available in the extensions (ext) folder of php in xampp. Hence I included the line in the php.ini as shown in the above image.
Since then I am getting this error.
I have installed instant client 12.1 as well but no luck. I also tried copying the OCI.dll from instantclient_12_1 and pasting it in c:/xampp/php and c:/xampp/apache/bin. The error still persists.
Need help..
UPDATE: I removed other oracle paths in PATH of environment variables, keeping only the instantclient path. Now I am getting this error..
Well, I've installed XAMPP 1.8.2, PHP 5.4 and Apache 2.0, and I use php_oci8_11g.dll and works fine.
You are trying use php_oci8_12g.dll, I recommend you read this link http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html with especifications for run oci12g.
I solved the issue after stuck 2-3 days .
Before follow steps Some things to remmember .
1- I am using win 8.1 64 bit .
2- Using Xampp 5.6.31 32 bit .
3- Using instaclient 12.2.0.1 64 bit (Because my win 8.1 is 64 Bit ) .
Now steps are below -
Step 1 - Download xampp 5.6.31 32 bit and install it .
Step 2 - Download and install oracle 11g R2
Step 3 - Download and install OTN (oracle instaclient 12.2.0.1 )
Extract all files in any drive in my case i have extract in C:\oracle\instaclient12.2.0.1
Add (C:\oracle\instaclient12.2.0.1 ) it to the path variables of the system. and also add new variable under variable of system with name TNS_ADMIN and put same path (C:\oracle\instaclient12.2.0.1 ) in its value .
Its time to set PHP.INI here uncomment following (see image below)
PHP.ini setup
Copy 3 files from C:\oracle\instaclient12.2.0.1 oci.dll,oraociei12.dll and oraons.dll to xampp apache\bin . by this step Unable to load dynamic library issue has been resolved .
Unable to load dynamic library issue solution
Now restart Apache on xampp and check info.php on browser . OCI8 module will appear there enable .
Enjoy !!!.
I solved the issue. The problem was that I was trying to use a 64 bit DLL(php_oci8_12g.dll) in a 32 bit PHP. I downloaded a 32 bit instantClient and it works now! :-)
instantclient-basic-nt-12.1.0.2.0.zip
I had a problem related to OCI8 and XAMPP for days in a row, the problem was shown as:
Fatal error: Call to undefined function oci_connect()
I was able to correct it using the php that comes by default with XAMPP. I'm using windows 10 64 bits as well, but used xampp-win32-7.3.2-0-VC15 (php 7.3.2). To summarize, I was able to get a correct configuration by doing everything with 32 bits versions (except the o.s). The full story and how I've done it:
If you go to your xampp/php directory through cmd, in my case it was "C:\xampp\php", and start the php by the simple command "php" it will probably show what dlls are not being found in the etc folder or which of those are not Win 32 compatible. If you get this problem, you will not be able to see the OCI8 page when opening a phpinfo() page:
If that's the case, with win 32 compatibility problems or not finding the dlls that you are certain are there, you should unistall XAMPP and reinstall it using a x32 version. The phpinfo page will show x86 Architecture. Remember to remove in the path variables any source that miss locate your php in use, the point here is to use the one given by default in XAMPP. If you need by any reason to use another php installation, remember to use x86 architecture.
If you need an updated OCI8 dll you can download it on https://pecl.php.net/package/oci8 , but remember to check the Thread Safety compatibility, you can find it on your phpinfo page as well. In my case it was enough to use the one provided by XAMPP.
After this, you have to enable the extension:
extension=oci8_12c
in the php.ini configuration file. It was enough for me to enable only this one, although some people suggests to also enable extension=pdo_oci. My suggestion is to try this only if you failed to install with the path here shown. It's also good to check if you are set in the correct path regarding the extensions, in my case:
extension_dir="C:\xampp\php\ext"
After this, you have to download the Oracle Instant Client. Since you are using x86 architecture (you must use this one), you need to find a 32-bit version of the OIC, but is also important to check which one is compatible with the extension you uncommented. In my case, of oci8_12c, it was instantclient-basic-nt-12.2.
The final step is to unzip it to a folder, like "C:\instantclient_12_2" and add it to the path variables of the system.
Reload apache and check if the OCI8 is shown correcly.

Not optimal PHP configuration detected on this machine

I'm trying to install PHPmyadmin in IIS 8, seem not success, because PHPmanager said "Not optimal PHP configuration detected on this machine". what does it mean? Anyone can help me to make PHPmyadmin works in IIS 8? Thank you!
Gary
I am not sure but maybe IIS and phpmyadmin are running on same port 80(default for both IIS and apache server).
Change the apache service for to something other than 80.
Look for line Listen 80 in apache configuration file and change it.
Does your IIS 8 support phpMyAdmin's requirements? Check that carefully. I had similar problem, read requirements, reconfigured sever - and et voilĂ ! Check also ports - phpMyAdmin port has to be other that IIS port.
Session support. Make sure that sessions are configured properly (see
below) and session.cookie_secure is Off if you are not using a secure
connection (i.e. "https")
Either the mysql or mysqli extensions (more details)
The mbstring extension
GD2 support in PHP to display inline thumbnails of JPEGs ("image/jpeg: inline") with their original aspect ratio
PHP 4.3.0 or newer is needed to use the "text/plain: external" MIME-based transformation
If you are using the Hardened PHP Suhosin extension make sure to increase the values for suhosin.request|get|post.max_* see also
Suhosin Configuration and Hardened-PHP request limits. You can examine
some increased suhosin.x values on the demo server -> main page ->
Show PHP information, e.g., suhosin.post.max_value_length and
suhosin.request.max_value_length = 128000 . See also FAQ 1.38. Another
such obstacle is "mod_security" on fedora boxes, error: "Method Not
Implemented. GET ..."; a possible solution:
http://forums.theplanet.com/index.php?showtopic=89327 .
If any paths are defined in your php.ini like session.save_path or upload_tmp_dir make sure that they do exist and your os is able to
write to them. Especially on a Windows system "/tmp" does not exist by
default! Due to a broken WIN PHP 5.2 installer paths are definitely
wrong in that version bugs.php.net/bug.php?id=39842. Using IIS as
webserver you also need an user named "IUSR" or "IUSR_MACHINENAME"
with r/w/modify rights granted on those folders.
Not really a requirement but a strong suggestion: if you are using the cookie authentication method, having the mcrypt PHP extension on
your web server accelerates not only the login phase but every other
action that you do in phpMyAdmin
On 64 bit systems the mcrypt PHP extension is required for auth_type "cookie". The alternative blowfish routines only work on
32-bit systems at the moment (due to a PHP 5.2.0/1 bug, should be
fixed in PHP 5.2.2 meanwhile). The same issue leads to the cryptic
"#1045 access denied for user www-data.." messages on Ubuntu boxes.
If you have weird random problems also check out whether apc or eaccelerator is the culprit. If the problem is with APC it's possible
to prevent scripts in the phpMyAdmin directory from being cached with
apc.filters. For instance you can add something like this to your
php.ini: apc.filters = "-/usr/share/phpmyadmin/.*"

Error message: "unexpected termination of script, debugging ended", when debugging PHP with Xdebug and Eclipse

I'm getting the following error when debugging:
php.ini settings:
xdebug.remote_enable=true
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
Assuming no syntax errors, make sure that you do not have any watches that cause the script to crash as the debugger attempts to evaluate them.
From my experience, this is the most common cause for such early death.
Regardless of that, you may also wish to change your internal web browser, as IE tends to provide cryptic error messages, or use an external browser session (and use remote debugging).
removing watch expressions solved this issue for me
If you are using mod_fcgid in your apache
the default value which is set for FcgidIOTimeout is 40 seconds so you get this xdebug to terminate in 40 seconds
to changed this value you need add the following line in you apache httpd.conf file
FcgidIOTimeout 600
this is for 10 minutes you can set this value to any other time limit according your requirement
even i had the same problem i found this solution for further details follow the links below
http://jonathonhill.net/2011-05-05/uploading-large-files/ (related link which gives info about the value)
http://httpd.apache.org/mod_fcgid/mod/mod_fcgid.html ( and search for FcgidIOTimeout)
I ran into the same issue on a different platform.
Running x64 linux with Eclipse 3.7.2, PHP 5.4.3 and Xdebug 2.2.0, this error message may appear when viewing variables.
See Xorg issue #797 and issue #824.
I can confirm that this issue is not resolved in release 2.2.0. The resolution is committed after 2.2.0, so you'll have to download a git copy (check the download page).
After compiling the git version, the issue at hand is resolved.
I also got this problem, after Googling for awhile I decided to revert back to 2.2rc because it's the latest version that this issue does not occur (actually not "always" but "sometimes", just need to relaunch).
Before that I've tried 2.3dev too with no luck.

wamp cannot load mysqli extension

WAMP installed fine, no problems, BUT...
When going to phpMyAdmin, I get the error from phpMyAdmin as follows:
Cannot load mysqli extension. Please check your PHP configuration
Also, phpMyAdmin documentation explains this error message as follows:
To connect to a MySQL server, PHP needs a set of MySQL functions
called "MySQL extension". This extension may be part of the PHP
distribution (compiled-in), otherwise it needs to be loaded
dynamically. Its name is probably mysql.so or php_mysql.dll.
phpMyAdmin tried to load the extension but failed. Usually, the
problem is solved by installing a software package called "PHP-MySQL"
or something similar.
Finally, the apache_error.log file has the following PHP warnings (see the mySQL warning):
PHP Warning: Zend Optimizer does not support this version of PHP - please upgrade to the latest version of Zend Optimizer in Unknown on line 0
PHP Warning: Zend Platform does not support this version of PHP - please upgrade to the latest version of Zend Platform in Unknown on line 0
PHP Warning: Zend Debug Server does not support this version of PHP - please upgrade to the latest version of Zend Debug Server in Unknown on line 0
PHP Warning: gd wrapper does not support this version of PHP - please upgrade to the latest version of gd wrapper in Unknown on line 0
PHP Warning: java wrapper does not support this version of PHP - please upgrade to the latest version of java wrapper in Unknown on line 0
PHP Warning: mysql wrapper does not support this version of PHP - please upgrade to the latest version of mysql wrapper in Unknown on line 0
So, for some reason PHP is not recognizing the mysql extension.
Anyone know why? Any solution or workaround?
I deleted the PHP in program files ad everything started working , the problem that there two installations of pHp
I tried many solutions, and none worked for me. I tried the following solutions:
Restart wampserver
Reinstall wampserver
restart machine
and all other solutions mentioned in this question.
However, none of these worked. Then I found that my PHPMyAdmin was not working in chrome and was working in firefox. So I tried clearing cache, restarting browser etc, but still it would not work.
Then I deleted all the files from C:\wamp\tmp and then tried again, and it works. I am not sure why it works, but here is what I think. The session was cached and not getting cleared. So as soon as I deleted all files in this directory all the sessions were deleted and hence it worked fine.
First, make sure that the php.ini file is loading the mysqli extension.
If you are using WAMPServer, click on the icon in the system tray, go to PHP -> PHP Extensions and make sure it is checked. If not, go into the php.ini file and make sure that the line: extension=php_mysqli.dll is uncommented (eg, remove the ; if it exists). If that line does not exist, add it.
If this still does not work, double check that the right php.ini file is being loaded.
To do so, view your phpinfo() (Here for WAMPServer). Scroll down to the Loaded Configuration File row and see which php.ini is being loaded.Make sure it is the right file. If you're using WAMPServer, it should be(WAMP INSTALL FOLDER)\bin\apache\Apache2.2.11\bin\php.ini. By default, it isC:\wamp\bin\apache\Apache2.2.11\bin\php.ini`.
If a different php.ini file is being loaded, just rename it to something else so that PHP will try and find the file somewhere else. There should be a way to specify which on eyou want to use, but I forget exactly how to do that...
If this still doesn't work... Try messing around with phpMyAdmin's settings, or using another answer, but I'm afraid I can't help beyond this.
I was running WAMP with two PHP versions 1) 5.2.9 and 2) 5.2.13.
As per site requirement i needed to change PHP version to 5.2.9 from 5.2.13. after swapping PHP version, error was "mysqli extension is missing". after debugging long time i get to know it was due to wrong "extension_dir" path in php.ini file.
So i changed its value:
Old: "extension_dir" c:/wamp/bin/php/php5.2.13/ext/
New: "extension_dir" c:/wamp/bin/php/php5.2.9/ext/
Restarted All services in wamp server, then it's fixed.
I had the same problem. I had WAMP server installed. All was working fine. Then one day I restarted my computer and it just stopped working! I tried desperately going through all help posts and doing them but nothing worked.
What they usually suggest you do is, first go to your php.ini file and make sure your 'extension_dir' is properly set. Then to make sure these two lines are not commented (remove the ; infront):
extension=php_mysql.dll
extension=php_mysqli.dll
Then some suggested that I download fresh copies of these two files but none worked. I also tried uninstalling everything (php/mysql/apache) and reinstalled fresh copies of WAMP server several times but with no luck.
Finally I managed to find an alternative solution. I switched to 'easyphp' (http://www.easyphp.org/). This is something very similar to WAMP. First I made backups of my sql databases so I can reload them on the new installation.
Then I installed 'easyphp' and everything seems to work fine. I reloaded my sql databases from my backup and now things are back to normal.
I hope someone suffering from a similar prob. will find this useful. If someone has really found a fix to make WAMP server work. Pls do be kind enough to post it here so many will benefit.
in wampserver go to php.ini. open the file and uncomment extension=msql.dll by removing semicolon(;) for respective operating sytem.
Just add in your php.ini:
[PHP_MCRYPT]
extension=php_mcrypt.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
Also setup the mysql password:
SET PASSWORD FOR root#localhost=PASSWORD('your_password');
And the phpmyadmin mysql password in config.inc.php:
$cfg['Servers'][$i]['password'] = 'your_password';
Had the same problem, with wamp. Try to exchange your current version of php.ini with a backup. There is one in: wamp\bin\php\php5.3.0phpForApache.txt. Worked for me.
Just wanted to chime in on this one. Using Wamp Server 2.0, and using Zend Studio with Zend debugger for development.
I wasn't able as of yet (will get back to it at some point) to get the zend debugger working with php 5.3. So in wamp I loaded an earlier php version, 5.2.11. I was getting the same error when acessing php my admin.
What I had to do was change the php.ini file value for "extension_dir" to c:/wamp/bin/php/php5.2.11/ext/ to match the version of php I was using. After that it was all good.
I had this problem and spent 2 hours trying all the solutions online, none worked.
Tried this, and it woked:
Change
mysql.default_host =
to
mysql.default_host = localhost
and restart WAMP. pay attention if you are using mysqli or not.
I had the same error. When I increased the script memory size and enabled E_ALL then restarted the server, I got that error in phpmyadmin. All I had to do to fix it was restart my computer!
I got this problem for a long time. Tried all I've read on forums and this finally worked for me:
Open your php.ini (I assume you've got the good one that is loaded...) and find this line
mysqli.default_port = 3306
change for
mysqli.default_port = 80
Restart all services
Go to localhost/phpmyadmin -> won't work
Reopen the php.ini file and retype this
mysqli.default_port = 3306
Restart all services
Worked for me.
For me worked this, after searching all logs/internet/every non-normal things.
You have to register dl by:
Through application:
WAMP -> PHP settings -> enable dl
or
# php.ini #
; Whether or not to enable the dl() function. The dl() function does NOT work
; properly in multithreaded servers, such as IIS or Zeus, and is automatically
; disabled on them.
; http://php.net/enable-dl
enable_dl = On
I have just installed WampServer, and faced same problem. I have found solution, that works for me, it is ridiculously simple.
Disable PHP extension php_mysqli.
Restart WampServer, visit local phpmyadmin.
Enable php_mysqli back.
Repeat step 2.
After few page refreshes, remaining errors plates (about MySQL and sqli) had gone.
i tried hard by
installing the wamp again and again,
by checking the php.ini file,
by restarting the machine,
by replacing the index.php file,
but none works.
then i go to the wamp/temp and deleted all files and it works fine now.
I had path variable in windows set to some random version of php.
The fix was to update it and set it to the folder within my wampserver installation:
C:\wamp64\bin\php\php5.6.38
Then I realized this is wrong also for my specific case, and I should actually be running the script from within vagrant. Live and learn.
I had this issue because of a different reason:
Check the PHP Error Log(Get from the Wamp Tray -> PHP -> PHP Error Log.
I had a syntax error in the php.ini file while I was editing the file.
Check the log and clear the error. This will open your PhpMyAdmin properly.
Check your phpForApache.ini file's extensions. This file should be same as your php.ini file.

Categories