我有一个非常奇怪的问题:
将小型应用程序部署到prod服务器后,我收到以下错误:
Fatal error: Uncaught exception 'PDOException' with message 'Could not connect to database.' in D:\inetpub\vhosts\DOMAIN\httpdocs\app\db\rb.php:194
Stack trace:
#0 D:\inetpub\vhosts\DOMAIN\httpdocs\app\db\rb.php(338): RedBean_Driver_PDO->connect()
#1 D:\inetpub\vhosts\DOMAIN\httpdocs\app\db\rb.php(5674): RedBean_Driver_PDO->setDebugMode(true, Object(RedBean_Logger_Default))
#2 D:\inetpub\vhosts\DOMAIN\httpdocs\app\db\test.php(7): RedBean_Facade::debug(true)
#3 {main} thrown inD:\inetpub\vhosts\DOMAIN\httpdocs\app\db\rb.php on line 194
我仔细检查了主机,用户,数据库名称和密码,一切看起来都不错。
我甚至创建了2个php脚本:
//这个会抛出错误
require('rb.php');
R::setup('mysql:host=localhost;dbname=DBNAME', 'DBUSER','DBPASS'); //mysql
R::debug(true);
$testRecord = R::load('test', 1);
echo $testRecord->name;
//这个工作正常
mysql_connect('localhost', 'DBUSER', 'DBPASS') or die(mysql_error());
mysql_select_db('DBNAME') or die(mysql_error());
$result = mysql_query("SELECT * FROM test")
or die(mysql_error());
$row = mysql_fetch_array( $result );
echo "Name: ".$row['name'];
我在这里想念的是什么?请注意,这两个脚本在localhost上运行正常。此外,Linux机器中的localhost,而PROD是Windows。但为什么会这么重要?
答案 0 :(得分:4)
在linux下ubuntu:
sudo apt-get install php5-sqlite
然后重启你的apache(sudo /etc/init.d/apache2 restart)
答案 1 :(得分:3)
所以问题是Windows服务器没有安装PDO mysql驱动程序。
答案 2 :(得分:1)
我收到了同样的错误,但是运行Ubuntu 16.04不得不改为:
sudo apt-get install php7.0-sqlite