【发布时间】:2013-07-02 19:15:48
【问题描述】:
我已经看到处理 php 5.3 中的错误的其他 SO 问题,并在位于 MAMP/conf/php5.4.4 的 php.ini 文件中启用了 php_pdo_mysql。当我查看 phpInfo 时,在 PDO 下它只启用了 sqlite 驱动程序。如果有人对如何进一步解决此问题有任何建议,将不胜感激。
这是有问题的行:
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
我包含一些额外信息,因为我认为它适用于我迄今为止尝试过的解决方案
try
{
$db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
die("Failed to connect to the database: " . $ex->getMessage());
}
我尝试用字符串值替换 PDO 对象的所有变量参数,即。 {$host} 变为 'localhost' 等,并在 catch 块中收到错误消息,其中 $ex->getMessage() 为 'could not find driver'
【问题讨论】:
-
请先提供一些代码。没有上下文,这个问题不容易理解。
-
这是bug report。有人说你应该安装
PDO_MYSQL。至少,它不在predefined constants of PDO的列表中。 -
这就是我不明白的——我没有注释 .ini 文件的 php_pdo_mysql 部分,但 mysql 没有出现在 phpinfo() 的 PDO 部分下
-
取消注释模块/扩展的选项与启用它不同。根据您运行的系统,可能有一种“托管”方式来启用它(例如 Debian/Ubuntu 下的
phpenmod),但基本上它需要在构建 PHP 时编译(例如使用 @ Gentoo 上的 987654328@ 标志)或使用extensionini parameter 从.so/.dll文件加载。 -
关于启用模块的“托管”方式...我听说在 MAMP 中 .ini 文件是在启动时生成的,所以我假设有某种配置文件可以修改.谁能证实这一点? MAMP 网站上的文档比较少。