我正在使用Windows Server 2012,Apache 2.2.22和PHP 5.3.13。还有postgreSQL 9.1和postGIS 2.0
PHP安装正常。我成功地从Apache更改了Apache的Document Root。现在DocumentRoot
设置为"D:/sites"
。
在安装PHP期间,我选择为postgreSQL安装PDO。
我检查了php.ini,并且没有注释掉行extension=php_pdo_pgsql.dll
。
在我的网站中,我有map.php,其中包含header.php。 Header.php包含connection.php。
connection.php包含连接数据库的代码。
<?php
error_reporting(E_ALL);
header('Content-Type: text/html; charset=UTF8');
try {
$dbh = new PDO("pgsql:host=localhost;port=5432;dbname=cmapdbs;user=yyy;password=yyy");
$dbh->exec("SET NAMES UTF8");
$dbh->query('SET NAMES UTF8');
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}
catch(PDOException $e){
echo"PROBLEM";
echo " --- ";
echo $e->getMessage();
echo " --- ";
echo $e;
}
pg_query('SET NAMES UTF8');
?>
我无法连接到数据库。我得到的错误是
Warning: Cannot modify header information - headers already sent by (output started at D:\sites\mysite\header.php:84) in D:\sites\mysite\connection.php on line 4
PROBLEM --- could not find driver --- exception 'PDOException' with message 'could not find driver' in D:\sites\mysite\connection.php:7 Stack trace: #0 D:\sites\mysite\connection.php(7): PDO->__construct('pgsql:host=loca...') #1 D:\sites\mysite\map.php(5): include_once('D:\sites\mysite...') #2 {main}
Fatal error: Call to undefined function pg_query() in D:\sites\mysite\connection.php on line 26
请原谅我的无知,我不知道如何解决它。我认为在安装过程中选择PDO并检查ini会起到作用
提前致谢
PS:在info.php
中,在PDO部分中没有启用任何内容。