我无法解决这个问题。我在我的XP上安装了“php-5.2.10-win32-installer.msi”和“apache_2.2.11-win32-x86-no_ssl.msi”和“mysql-4.1.22-win32”。当我尝试使用phpinfo打印输出数据库支持时,我可以看到mysql存在,但不是pgsql。我检查了我的php.ini,有这样的条目:
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_PGSQL]
extension=php_pgsql.dll
我想知道为什么MySQL没问题,但为什么不用postgreSQL?
以下是我的PHP脚本。
error_reporting(E_ALL | E_STRICT);
echo "connecting...<br>";
echo 'php.ini: ', get_cfg_var('cfg_file_path')," <br/> ";
echo extension_loaded('pgsql') ? 'yes':'no'," <br/> ";
$pg = pg_connect("host=localhost user=postgres
password=xx dbname=xx")
or die("Can't connect to database.");
echo "connected<br>";
?>
结果是:
connecting... php.ini: C:\Program Files\PHP\php.ini no
Fatal error: Call to undefined function pg_connect() in E:\WebSite\index.php on line 19
我检查了我的php.ini,它上面有我提到的“dll”条目,请帮忙。
答案 0 :(得分:1)
在php.ini文件中更改:
;extension=php_pdo_pgsql.dll
到
extension=php_pdo_pgsql.dll
并重启Apache。这会添加Postgres扩展名(默认情况下已注释掉)。
还要确保编辑正确的php.ini文件。我不熟悉你正在使用的发行版,但我看到一些有2个甚至3个php.ini文件浮动(例如一个用于Apache,一个用于CLI,一个用于我不知道是什么)。
在XAMPP 1.7.2中,这是\xampp\php\php.ini
。
答案 1 :(得分:0)
您还需要一行
extension=php_pgsql.dll
在您的配置中在PHP中使用Postgres。