简体   繁体   English

如何在Windows上为PHP安装PDO驱动程序?

[英]How do I install PDO drivers for PHP on Windows?

I installed Apache, PHP 5.6 and MySQL 5.7 on a Windows server. 我在Windows服务器上安装了Apache,PHP 5.6和MySQL 5.7。

In php.ini, I enabled the following: 在php.ini中,我启用了以下功能:

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) (并重新启动Apache)

But when I try to use PDO in my php page, it still throws the error: 但是,当我尝试在我的php页面中使用PDO时,它仍然抛出错误:

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

What do I have to do to get PDO installed? 要安装PDO,我该怎么做?

The problem was the extension_dir directive did not work as a relative path. 问题是extension_dir指令不能用作相对路径。 Changing from extension_dir="ext" to extension_dir="c:/phpinstall_path/ext" fixed the problem. extension_dir="ext"更改为extension_dir="c:/phpinstall_path/ext"解决了该问题。

In my apache httpd.conf I have (note I have # as remmed out because it took me 1 hour at least). 在我的Apache httpd.conf我有(请注意,我把#改了,因为至少花了我1个小时)。 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 ; 在同一个文件夹中,在php.ini文件中,我有以下与pdo相关的代码块,有效的代码块未使用;替换;

;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 ;扩展名= php_pdo_firebird.dll扩展名= php_pdo_mysql.dll;扩展名= php_pdo_oci.dll扩展名= php_pdo_odbc.dll;扩展名= php_pdo_pgsql.dll;扩展名= 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 那么我有一个phpinfo_xyz.php 文件仅用于测试目的(阅读:完成后将其删除),其中包含

<?php phpinfo(); ?>

Restart apache, point to that file from a browser and notice the following blocks similar to the following three. 重新启动apache,从浏览器指向该文件 ,并注意以下与以下三个类似的块。

在此处输入图片说明

... ...

在此处输入图片说明

... ...

在此处输入图片说明

In the first PHP picture above from phpinfo() , it was the getting the path right in httpd.conf that took the longest. 在上面来自phpinfo()的第一张PHP图片中,花费最长的时间是httpd.conf中的正确获取路径。 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. 因此,直到“ Loaded Configuration File出现得体时,它才有机会。

Good luck. 祝好运。 It was not fun. 不好玩。 Half the problem was there were like 2 or 4 options of which original download to perform. 一半的问题是有大约2或4个选项可以执行原始下载。 Sadly I think it took me 2 or 3 hours all together. 可悲的是,我认为这花了我2到3个小时。 But I am not as smart as the rest of you. 但是我不像你们其他人那么聪明。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM