How do I install PDO drivers for PHP on Windows?

31,444

Solution 1

The problem was the extension_dir directive did not work as a relative path. Changing from extension_dir="ext" to extension_dir="c:/phpinstall_path/ext" fixed the problem.

Solution 2

In my apache httpd.conf I have (note I have # as remmed out because it took me 1 hour at least). So I left it to show me how not to do it.

#PHPIniDir 'c:\apps\php\'
#PHPIniDir "C:\Apache24\~PHP_download\php-5.6.11-Win32-VC11-x64\"
PHPIniDir "C:/Apache24/~PHP_download/php-5.6.11-Win32-VC11-x64"

#LoadModule php5_module "c:/apps/php/php5apache2_2.dll"
LoadModule php5_module "C:/Apache24/~PHP_download/php-5.6.11-Win32-VC11-x64/php5apache2_4.dll"

AddHandler application/x-httpd-php .php

In the above folder (and seen below) I have these files:

 Directory of C:\Apache24\~PHP_download\php-5.6.11-Win32-VC11-x64

07/24/2015  12:33 PM    <DIR>          .
07/24/2015  12:33 PM    <DIR>          ..
07/24/2015  12:32 PM            69,632 deplister.exe
07/24/2015  12:32 PM    <DIR>          dev
07/24/2015  12:32 PM    <DIR>          ext
07/24/2015  12:32 PM    <DIR>          extras
07/24/2015  12:32 PM         1,290,752 glib-2.dll
07/24/2015  12:32 PM            16,384 gmodule-2.dll
07/24/2015  12:32 PM        25,337,856 icudt54.dll
07/24/2015  12:32 PM         1,907,712 icuin54.dll
07/24/2015  12:32 PM            51,200 icuio54.dll
07/24/2015  12:32 PM           256,000 icule54.dll
07/24/2015  12:32 PM            50,176 iculx54.dll
07/24/2015  12:32 PM            63,488 icutest54.dll
07/24/2015  12:32 PM           195,072 icutu54.dll
07/24/2015  12:32 PM         1,369,088 icuuc54.dll
07/24/2015  12:32 PM            79,826 install.txt
07/24/2015  12:32 PM    <DIR>          lib
07/24/2015  12:32 PM         1,823,232 libeay32.dll
07/24/2015  12:32 PM            46,592 libenchant.dll
07/24/2015  12:32 PM           160,256 libpq.dll
07/24/2015  12:32 PM           237,056 libsasl.dll
07/24/2015  12:32 PM           201,728 libssh2.dll
07/24/2015  12:32 PM             3,286 license.txt
07/24/2015  12:32 PM           518,643 news.txt
07/24/2015  12:32 PM                43 phar.phar.bat
07/24/2015  12:32 PM            53,242 pharcommand.phar
07/24/2015  12:32 PM            58,368 php-cgi.exe
07/24/2015  12:32 PM            30,720 php-win.exe
07/24/2015  12:32 PM            77,824 php.exe
07/24/2015  12:32 PM             2,523 php.gif
08/29/2015  02:28 PM            74,572 php.ini
07/24/2015  12:32 PM            74,334 php.ini-development
07/24/2015  12:32 PM            74,365 php.ini-production
07/24/2015  12:32 PM            31,744 php5apache2_4.dll
07/24/2015  12:32 PM           845,830 php5embed.lib
07/24/2015  12:32 PM           167,936 php5phpdbg.dll
07/24/2015  12:32 PM         8,269,312 php5ts.dll
07/24/2015  12:32 PM           180,224 phpdbg.exe
07/24/2015  12:32 PM            21,360 readme-redist-bins.txt
07/24/2015  12:32 PM             3,634 snapshot.txt
07/24/2015  12:32 PM           353,280 ssleay32.dll

And in that same folder, in the php.ini file I have the following block that are pdo-related, with the ones in force not remmed out with a ;

;extension=php_pdo_firebird.dll extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll

then I have a phpinfo_xyz.php file for testing purposes only (read: delete it when you are done) that contains

<?php phpinfo(); ?>

Restart apache, point to that file from a browser and notice the following blocks similar to the following three.

enter image description here

...

enter image description here

...

enter image description here

In the first PHP picture above from phpinfo(), it was the getting the path right in httpd.conf that took the longest. That is why I left in the wrong path attempts seen in this Answer.

So it wasn't until Loaded Configuration File showed up decent that it had a chance.

Good luck. It was not fun. Half the problem was there were like 2 or 4 options of which original download to perform. Sadly I think it took me 2 or 3 hours all together. But I am not as smart as the rest of you.

Share:
31,444
Don Rhummy
Author by

Don Rhummy

SOreadytohelp

Updated on July 09, 2022

Comments

  • Don Rhummy
    Don Rhummy almost 2 years

    I installed Apache, PHP 5.6 and MySQL 5.7 on a Windows server.

    In php.ini, I enabled the following:

    extension=php_mysql.dll
    extension=php_mysqli.dll
    extension=php_oci8_12c.dll
    extension=php_pdo_mysql.dll
    extension=php_pdo_oci.dll
    

    (And restarted Apache)

    But when I try to use PDO in my php page, it still throws the error:

    Fatal error: Uncaught exception 'PDOException' with message 'could not find driver'
    

    What do I have to do to get PDO installed?

  • Don Rhummy
    Don Rhummy over 8 years
    I have all the same settings (but diff. paths) and it's still giving the error
  • Drew
    Drew over 8 years
    well I am not there :P ... and there are only some debugging attempts that are well suited for little comment boxes.
  • Don Rhummy
    Don Rhummy over 8 years
    Could it be that I'm using 32bit Apache/PHP on a 64bit machine?
  • Drew
    Drew over 8 years
    I know for a fact that the 32 vs 64 issue took a while for me.
  • Don Rhummy
    Don Rhummy over 8 years
    What do you mean? Did you use 32bit? Or 64bit? What did you do to fix it?
  • Drew
    Drew over 8 years
    It would, because I left the directory names as I did with versioning info, that I chose that which you are presented with on a download page, and I got one to work and not explode when I started up apache.
  • Drew
    Drew over 8 years
    And that is all the time I can give this
  • Don Rhummy
    Don Rhummy over 8 years
    Thanks for your help. I finally discovered the problem. You can see my answer above.
  • Drew
    Drew over 8 years
    I am glad my Answer helped you with paths. What do we do with helpful answers :P We vote them up, and in your case mark them as Answered (as opposed to making trivial Answers like yours)
  • Drew
    Drew over 8 years
    It is advisable to show the people that get you to your answers the common decency of voting up their Answers. As opposed to making a trivial one and not acknowledging it. Voting reinforces the drive in people who expend effort to solve your problems ... with the desire to keep doing that for others.
  • Don Rhummy
    Don Rhummy over 8 years
    @Drew I'm happy to give you an upvote for your effort (it was a lot, so I did), but your answer did not help me discover the issue. As I mentioned, you had the exact same settings as me and it worked for you but not on my server.
  • Drew
    Drew over 8 years
    Because in looking at my answer, you learned about the direction the slash should go? Anyway, we both have PDO to do, good luck :P
  • Don Rhummy
    Don Rhummy over 8 years
    @Drew No, I already knew which way the slash went. It was using the absolute path vs relative path and for a setting you didn't include in your answer. But thanks for all the effort - it is appreciated!