While I am debugging PHP Script in Eclipse, it doe

2019-01-15 15:24发布

问题:

I have installed Eclipse and xDebug on Ubuntu 10.10.
When I debug some php file as a page, that works fine.
When I try to debug it as a script, I give the message that mysql extension is not loaded.
I set the following options for PHP executable:

  • Executable path: /usr/bin/php
  • PHP ini file: /etc/php5/apache2/php.ini
  • SAPI type: CLI
  • PHP debugger: XDebug

I wrote the following script:

test.php
<?php
$ext = get_loaded_extensions();
print_r($ext);
?>

When I put in command line /usr/bin/php test.php
I give 50 loaded modules include mysql and mysqli.
When I debug it as a page in Eclipse I give the same modules and xdebug.
When I debug it as a page in Eclipse I give 45 modules include xdebug, but mysql and mysqli are not loaded.

回答1:

after struggling with this issue for several hours today, I decided to manually cat all informations inside one single .ini file, and started eclipse with eclipse -clean. something like the following script should do the trick:

#!/bin/bash
mkdir /etc/php5/cli_eclipse
cat /etc/php5/cli/php.ini /etc/php5/conf.d/* > /etc/php5/cli_eclipse/php.ini

(you could obviously check if the dir is already existing etc. but this script is here for illustrative purposes only. you'll need to use a superuser account/sudo to execute this).

point your php runtime in eclipse under window -> preferences -> PHP -> PHP Executables to your created file and restart eclipse once with the -clean flag. pdt should create temporary "php.ini"s containing all necessary information.



回答2:

The Eclipse PDT team decided to introduce the -n option to fix the Bug #324073. So only php.ini from /tmp/zend_debug/... has been loaded, and all additional INI files have not been loaded.

This has been introduced since PDT 2.2.0 M201010110334 (2010/10/11).

For more information, see the following links:

  • http://redmine.piece-framework.com/issues/242
  • https://bugs.eclipse.org/bugs/show_bug.cgi?id=339547
  • https://bugs.eclipse.org/bugs/show_bug.cgi?id=347618


回答3:

Try invoke the function described here: http://php.net/manual/en/function.php-ini-loaded-file.php and see if it returns exactly the same path. On Ubuntu as well as on Debian the php configuration is split among many files. Look at the /etc/php5 (or similar path).

As last resort I would write my own config and reference it in the eclipse php run as script configuration and make sure the config includes and references the mysql extension.