【发布时间】:2014-10-25 15:47:24
【问题描述】:
我决定将我的 mac 升级到 Yosemite,但现在 Postgres 无法正常工作。
这是我的环境
apachectl -v
Server version: Apache/2.4.9 (Unix)
Server built: Sep 9 2014 14:48:20
php -v
PHP 5.6.2 (cli) (built: Oct 24 2014 15:50:08)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
PostgreSQL 9.3
我想做什么:
1.使用 brew 安装
brew tap josegonzalez/php
brew install php56 --with-apache --with-mysql --with-intl --with-pgsql=/Library/PostgreSQL/9.3/
brew link --overwrite php56
启用扩展
sudo nano /usr/local/etc/php/5.6/php.ini
并添加
extension=pdo_pgsql.so
sudo apachectl restart
2。手动编译
sudo pecl download pdo_pgsql
sudo tar xzf PDO_PGSQL-1.0.2.tgz
sudo cd PDO_PGSQL-1.0.2
sudo phpize
sudo ./configure --with-pgsql=/Library/PostgreSQL/9.3/
sudo make
sudo make -j5 test
sudo make -j5 install
3. phpbrew安装
sudo phpbrew install --mirror http://br1.php.net 5.6.2 +pdo+pgsql=/Library/PostgreSQL/9.3/bin/
当我尝试使用这个文件时它肯定不起作用:
<?php
ini_set ("display_errors", "1");
error_reporting(E_ALL);
$host = "host=127.0.0.1";
$port = "port=5432";
$dbname = "dbname=peajetron";
$credentials = "user=peajetron password=peajetron";
$db = pg_connect( "$host $port $dbname $credentials" ) or die('Could not connect');;
if(!$db){
echo "Error : Unable to open database\n";
} else {
echo "Opened database successfully\n";
}
?>
当我尝试这段代码时,我得到了同样的错误:
Fatal error: Call to undefined function pg_connect() in /Library/WebServer/Documents/testConnection.php on line 10
我不知道我做错了什么。谁能帮帮我?
更新:
根据phpinfo,我有/etc/php.ini中的php.ini
根据php帮助我运行这个命令
php -c /etc/php.ini
我有以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pdo_pgsql.so'
- dlopen(/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226
/php_pdo_pgsql.so, 9): image not found in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pgsql.so'
- dlopen(/usr/local/Cellar/php56/5.6.2/lib/php/extensions/no-debug-non-zts-20131226/php_pgsql.so,
9): image not found in Unknown on line 0
解决方案
根据post ,我卸载了所有并重新安装了所有
【问题讨论】:
-
您是否检查了您的
php.ini以确保 postgres 模块已加载?当我升级到 Yosmite 时,它禁用了一堆模块。 -
是的,当然,我运行命令
php --ini得到/usr/local/etc/php/5.6/php.ini然后我添加扩展名extension=pdo_pgsql.so -
phpinfo()告诉您有关 Postgres 配置的信息? -
我在 postgres 或 pgsql 中找到的唯一东西是
PostgreSQL Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne,php 不加载 postgres 模块 -
在运行
phpinfo()时,仔细检查浏览器中报告的php.ini路径。有时cli和fpm有不同的php.ini文件。
标签: php postgresql homebrew osx-yosemite