有一些类似的问题,我已经阅读并遵循建议,但没有尽头,只有相当新的,我觉得现在是停止尝试'如果我打破任何进一步的事情。
我尝试通过PDO连接到我的数据库时收到以下错误:
Connection error: could not find driver
1。我确保Apache链接到我的自制PHP。
$ which php
/usr/local/bin/php
2。在php.ini
extension=php_pdo_pgsql.dll
pdo_pgsql模块显示在php_info
中第3。我的数据库连接是:
<?php
class Database
{
public $conn;
public function getConnection()
{
try {
$this->conn = new PDO("postgres://$user:$pass@$host:$port/$db_name");
print_r($this->conn);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->conn->exec("set names utf8");
} catch (PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
exit();
}
return $this->conn;
}
}
我已经对这些细节进行了三次检查,并且它们是正确的(尽管已省略)。我可以通过IntelliJ的数据库连接向导
连接相同的URI 4。我已修改 /usr/local/var/postgres/postgresql.conf
以包含:
#listen_addresses = '*'
我仍然没有运气,正在寻找这个头脑中的一些指导。
答案 0 :(得分:0)
我看到你正在使用Linux,但尝试启用.dll库,用于Windows机器。评论这一行是有道理的。
确保已启用pdo_pgsql模块:
# php -m | grep pdo_pgsql
pdo_pgsql
如果不是
,请安装它# yum install php-pgsql
Here is steps我在我的干净的CentOS 7安装上使PHP + PostgreSQL工作:
安装PostgreSQL(但我认为你已经安装了这个和 配置的)
# yum install postgresql-server postgresql-contrib
更新了配置/var/lib/pgsql/data/pg_hba.conf,从ident更改为md5
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
在
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
重新启动postgresql服务
# service postgresql restart
安装PHP和PDO连接器
# yum install php php-pgsql
以下是我用来测试连接的PHP脚本示例:
<?php
// Configure DB Parameters
$host = "localhost";
$dbname = "masterdb";
$dbuser = "automation";
$userpass = "fGmK4hvDZPB6fr6c";
$dsn = "pgsql:host=$host;port=5432;dbname=$dbname;user=$dbuser;password=$userpass";
try{
// create a PostgreSQL database connection
$conn = new PDO($dsn);
// display a message if connected to the PostgreSQL successfully
if($conn){
echo "Connected to the $dbname database successfully!";
echo "\n";
}
}catch (PDOException $e){
// report error message
echo $e->getMessage();
}
输出:
# php pdo_test.php
Connected to the masterdb database successfully!