我即将在Yii上获得一些经验,所以我为Linux环境设置了一个XAMPP(1.8.1)并安装了Yii框架。我基于“使用Yii和PHP进行Web应用程序开发”一书的进展有一个例子来设置数据库连接并通过运行以下代码来测试Yii控制台:
echo Yii::app()->db->connectionString;
当然之前我创建了相应的MySQL数据库,并在相应的main.php和console.php中设置了连接字符串,但是我收到了错误:
异常'CDbException',消息'CDbConnection无法打开数据库连接:在/work/webroot/yii/framework/db/CDbConnection.php:382找不到驱动程序
基于Yii的要求检查器启用了PDO for MySQL。如果我检查phpinfo的HTML版本,它会说:
用于MySQL的PDO驱动程序:已启用
和
客户端API版本:mysqlnd 5.0.10 - 20111026 - $ Id:b0b3b15c693b7f6aeb3aa66b646fee339f175e39 $
但是如果我从Yii控制台运行phpinfo,它会得到以下结果:
PDO支持=>启用
PDO drivers =>
所以,对我来说似乎缺少PDO驱动程序。我读了几个关于如何为linux下载PDO驱动程序的论坛帖子,以及如何更改php.ini以使用这些驱动程序,但我想这个解决方案适用于CLI环境,而不适用于XAMPP。
有人可以帮助我在这里如何在XAMPP上为MySQL数据库设置PDO驱动程序?我正在使用Ubuntu 13.10桌面。
答案 0 :(得分:1)
我玩了一段时间,并在几个论坛帖子的帮助下找到了解决方案。
解决以下驱动程序问题...
'CDbException',消息'CDbConnection无法打开数据库连接:找不到驱动程序'
......我必须安装正确的连接器。我运行了以下内容:
sudo apt-get install php5-mysql
之后,我尝试通过运行代码
再次通过Yii控制台检查连接字符串echo Yii::app()->db->connectionString;
但是这次它给了我一个不同的错误消息:
'CDbException',消息'CDbConnection无法打开数据库连接:SQLSTATE [HY000] [2002]无法通过套接字连接到本地MySQL服务器'/var/run/mysqld/mysqld.sock'
要解决此问题,我在/ protected / config目录下更改了main.php和console.php,并将'localhost'替换为'127.0.0.1'。
基于PHP documentation这是必需的,因为MySQL Unix套接字不应与主机或端口一起使用。
这解决了第二条错误消息,我可以连接到我的数据库。