Why does PEAR DB give "DB Error: extension not found [DB Error: extension not found].."

I'm moving a small set of PHP/Postgres applications from Ubuntu 9.x to 10.10. When I try to run the application, I get this error:

DB Error: extension not found [DB Error: extension not found] ** pgsql://jean@/appx

The code is:

            if (PEAR::isError($db)) {
                      die($db->getMessage()."  ".$db->getUserInfo()." ");
            if (DB::isError($db)){

When I installed DB, I noticed that it's been supersceded by MDB2, what do I have to change to make it work with MDB2, or what do I need to do make the DB code work?


Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Julian MatzTechnical SupportCommented:
Hi JPNeron,

See if the following works for you:

$ sudo aptitude install php5-psql

(Inside a terminal window, of course)
JPNeronAuthor Commented:
When I used 'php5-psql' as the package name, it said there was no such package. On a hunch, I tried 'php5-pgsql' instead, and it did download & install it, but I still get the error.
Julian MatzTechnical SupportCommented:
Sorry, it's more likely you're missing the Pear extension. My guess is that when you upgraded, the php extension directory probably changed. If this is the case, you'll need to reinstall the DB package. However, what I would do is try the MBD2 package first. If that fails, just re-install DB.

$ pear install MDB2

Make sure there are no errors, and take note of whether Pear has enabled the extension for you or not. You can post the last couple of lines from the output here.
C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

JPNeronAuthor Commented:
Both those packages appear to be installed:

root@Ubuntu:/home/jean# pear install MDB2
pear/MDB2 is already installed and is the same as the released version 2.4.1
install failed
root@Ubuntu:/home/jean# pear install DB
pear/DB is already installed and is the same as the released version 1.7.13
install failed

If DB was missing, wouldn't I get an error on the require_once('DB.php') statement?

Also, just to clarify, I'm not upgrading a machine, I have a brand new machine and I copied the php pages from the old server to the new server.
Julian MatzTechnical SupportCommented:
You're right.

I think I've figured it out though. First, you do actually need the package php5-pgsql. Secondly, you also need php5-mysql. Without MySQL support, PHP in Ubuntu won't support PgSQL either, apparently.

$ sudo aptitude install php5-pgsql php5-mysql

Now, if you want to use MDB2 instead of DB, it's fairly straight forward. Just do the following:

$ sudo pear install pear/MDB2

And then:

$ sudo pear install pear/MDB2#pgsql

Then you need to change your code to following:

            require_once('MDB2.php'); // CHANGE THIS LINE
            $db=MDB2::connect("pgsql://jean@/appx"); // CHANGE THIS LINE ALSO
            if (PEAR::isError($db)) {
                      die($db->getMessage()."  ".$db->getUserInfo()." ");
            if (MDB2::isError($db)){ // AND THIS ONE

Open in new window

Hope that fixes it for you.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
JPNeronAuthor Commented:
We have progress!

Now I get:

MDB2 Error: connect failed _doConnect: [Error message: unable to establish a connection] ** pgsql(pgsql)://jean:xxx@/appx

Not sure what the problem is here. This user can run psql, access the 'appx' database, view tables, etc, etc. Maybe there's a problem in the postgres setup that prevents connections from apache?
Julian MatzTechnical SupportCommented:
Would you be able to temporarily switch back to DB? It seems to me that DB does error reporting more constructively than MDB2, by default anyway.

Perhaps there's a setting to make MDB2 spit out more details, but I'm not sure where to look for that. But if we can get it working with DB, we should then be able to get it working with MDB2 also.

I'm assuming you have PostgreSQL installed?

$ sudo aptitude install postgresql

JPNeronAuthor Commented:
Hooray! Just switching back to DB solved the problem, everything works as it should!

I guess the problem all along was I needed to install the php5-mysql package.

Thanks for the help!
JPNeronAuthor Commented:
The problem was the missing php5-mysql part of PEAR. After installing that, it was not necessary to change anything.
Julian MatzTechnical SupportCommented:
Good stuff! Glad I could help.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.