【问题标题】:mySQL PDO not enabled in phpinfo()phpinfo() 中未启用 mySQL PDO
【发布时间】:2013-04-20 16:38:48
【问题描述】:

我正在尝试设置本地 PHP 开发环境,但在为 PDO 启用 mySQL 时遇到了问题,而且我对这种类型的设置还很陌生...所以我不确定我可能会丢失什么。

我已取消注释:

extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo.dll
extension=php_pdo_mysql.dll

并将 extension_dir 设置为:

extension_dir = "C:\PHP\ext\"

另外,我已将 libmysql.dll 文件复制到 Apache 的 Bin 目录中,并且我确信我正在检查正确的 php.ini 文件。

当我打开 phpinfo() 时,我得到以下信息:

**mysql**
Active Persistent Links  0  
Active Links  0  
Client API version  5.0.27  

Directive Local Value Master Value 
mysql.allow_persistent On On 
mysql.connect_timeout 60 60 
mysql.default_host no value no value 
mysql.default_password no value no value 
mysql.default_port no value no value 
mysql.default_socket no value no value 
mysql.default_user no value no value 
mysql.max_links Unlimited Unlimited 
mysql.max_persistent Unlimited Unlimited 
mysql.trace_mode Off Off 


**mysqli**
Client API library version  5.0.27  
Client API header version  5.0.22  
MYSQLI_SOCKET  /tmp/mysql.sock  

Directive Local Value Master Value 
mysqli.default_host no value no value 
mysqli.default_port 3306 3306 
mysqli.default_pw no value no value 
mysqli.default_socket no value no value 
mysqli.default_user no value no value 
mysqli.max_links Unlimited Unlimited 
mysqli.reconnect Off Off 

**PDO**
PDO drivers  no value  

在命令行上运行php.exe -m 会出现以下错误:

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_mysql.dll' - the specified module could not be found.

我收到上述错误:

php_mysql.dll
php_pdo_mysql.dll
php_pdo.dll

如果我启用 sqlite,它会在 phpinfo() 列表中显示得很好。

当我转到应该使用 mysql 连接的页面时,我收到以下错误:

致命错误: 在 C:\Inetpub\wwwroot\test\connection.php:11 中未捕获异常 'PDOException' 并带有消息 'could not find driver' 堆栈跟踪:#0 C:\Inetpub \wwwroot\test\connection.php(11): PDO->__construct('mysql:host=xxx....', 'loginname', 'password') #1 C:\Inetpub\wwwroot\test\pagename。 php(18): include('C:\Inetpub\wwwr...') #2 {main} 在第 11 行的 C:\Inetpub\wwwroot\test\connection.php 中抛出

使用 EasyPHP 进行开发。在我不得不使用 mySQL 之前没有问题

【问题讨论】:

  • 好吧,如果你真的将库移动到 apache bin 目录,你就回答了你自己的问题......
  • 你已经回答了你自己的问题,当 php 在 /php/ext/ 中查找时,你说你已经将 .dll 放在 /apache/bin 中
  • 移动或复制?... 那些 php_*.dll 是否也存在于 ext 文件夹中?
  • 你重启了apache吗?
  • 通常不需要将libmysql.dll 移动到任何地方。它在抱怨 php_mysql.dll 这是遗留扩展,而不是 PDO。

标签: php mysql apache phpinfo


【解决方案1】:

尝试了很多建议,但最有效的是删除所有内容并重新开始。

摆脱了 WAMP 并加载了 XAMPP,现在 mySQL 使用 PDO 启动并运行。

谢谢大家

【讨论】:

    【解决方案2】:

    在 Apache 和命令行中使用 PHP 是两件不同的事情:

    您将 libmysql 放入 apaches 的 bin 文件夹中。当您从命令行启动 php 时,libmysql 必须也可以从那里访问,例如。当它在 PATH 中时。

    【讨论】:

    • 谢谢 tw...我确实在 PATH 中设置了 dir 位置...想知道为什么 sqlite 会在 PDO 下启用而 mysql 不会。
    猜你喜欢
    • 2011-01-12
    • 2018-07-27
    • 2019-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多