Jor*_*les 30 php postgresql macos php-extension
我正在非常困难的时候让命令"pg_connect()"在我的Mac上正常工作.我正在编写一个PHP脚本(从控制台执行)来读取PostgreSQL数据库并通过电子邮件发送报告.
我已经进入我的php.ini文件并添加了
extension=pgsql.so
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了以下错误.
PHP警告:PHP启动:无法加载动态库'/usr/lib/php/extensions/no-debug-non-zts-20090626/php_pgsql.so' - dlopen(/ usr/lib/php/extensions/no-debug -non-zts-20090626/php_pgsql.so,9):在第0行的未知中找不到图像
PHP致命错误:在...中调用未定义的函数pg_connect()(此处为blah文件)
在运行时phpinfo(),我对PostgreSQL一无所知,那么我的问题是什么?
Fra*_*nes 72
与OS X捆绑在一起的PHP版本不包括PostgreSQL.你必须自己编译扩展.以下是一些说明:
php -v.curl -O http://us.php.net/distributions/php-5.3.3.tar.gz.(此示例下载PHP 5.3.3但这必须与您的版本匹配)tar -xzvf php-5.3.3.tar.gzcd php-5.3.3/ext/pgsql/phpize../configure.make.sudo make install.php.ini文件extension=pgsql.so.(你可能已经这样做了)OS X Mountain Lion
Apple autoconf的更新已从较新版本的XCode中删除,因此上述过程将在#5失败.要解决这个问题:
/usr/bin/ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)".sudo chown -R $USER /usr/local/Cellar.brew update.brew install autoconf.这应该安装autoconf并允许您使用上面的说明安装模块.
Dan*_*ier 36
如果您使用home brew,则可以使用以下命令解决此问题:
brew install php55-pdo-pgsql
对于其他php版本,搜索:
brew search pgsql
安装源
下载PHP源代码.与Mountain Lion不同,您没有预先安装任何标题链接,因此需要将它放在/ usr/include/php中.小牛队使用PHP 5.4.17,但来自php.net的最新5.4.x源代码应该:
tar -jxvf php-5.4.20.tar.bz2
sudo mkdir -p /usr/include
sudo mv php-5.4.20 /usr/include/php
Run Code Online (Sandbox Code Playgroud)
配置PHP
cd /usr/include/php
./configure --without-iconv
sudo cp /etc/php.ini.default /etc/php.ini
Run Code Online (Sandbox Code Playgroud)
建立一个模块
我需要pdo_pgsql模块 - 假设您已经安装了必要的依赖项,相同的模式应该适用于任何模块:
cd ext/pdo_pgsql
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我有以下错误:
找不到autoconf.请检查您的autoconf安装和$ PHP_AUTOCONF环境变量.然后,重新运行此脚本.错误:`phpize'失败了
所以我不得不使用这个命令:
brew install autoconf
Run Code Online (Sandbox Code Playgroud)
然后:
phpize
Run Code Online (Sandbox Code Playgroud)
之后我尝试:./ configure
但我有下一个问题:
检查pg_config ...未找到configure:error:找不到libpq-fe.h.请指定正确的PostgreSQL安装路径
所以解决方案是指定正确的PostgreSQL安装路径:
./configure --with-pdo-pgsql=/Library/PostgreSQL/9.3/
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
将pdo_pgsql.so复制到/ usr/lib/php/extensions/no-debug-non-zts-20100525.
然后简单地添加
extension=pdo_pgsql.so to /etc/php.ini
Run Code Online (Sandbox Code Playgroud)
运行php -m以确认一切都按计划进行.
对于那些用自制软件安装php7/ngix/postgres的人
您可以使用以下命令安装PostgreSQL模块:
brew install php70-pdo-pgsql
Run Code Online (Sandbox Code Playgroud)
之后,你必须重新启动php服务:
brew services restart php70
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62308 次 |
| 最近记录: |