【问题标题】:PHP 5.6.2 + Postgres + Apache 2.4 does not work on YosemitePHP 5.6.2 + Postgres + Apache 2.4 不适用于优胜美地
【发布时间】: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


【解决方案1】:

您安装了两个 PHP 副本。 Mac OS X 附带一个安装在/usr/bin/php 的PHP 副本。当您使用homebrew 包管理器时,它会在/usr/local/Cellar 中安装包,然后将它们符号链接(在适当时)到/usr/local/bin。您可以通过输入 /usr/bin/php -v 和 /usr/local/bin/php -v 来验证这一点,您应该会得到两个不同的输出。

当您使用homebrew 安装postgres 时,它会将PHP 的homebrew 安装副本配置为使用postgres。如果您运行/usr/local/bin/php -r 'phpinfo()',您应该会看到postgres 已安装。

您运行的apache 副本配置为使用Mac OS X 安装的PHP 副本,而不是homebrew 安装的副本。您需要重新配置 Apache 以使用正确的 PHP 模块。

尝试使用您喜欢的文本编辑器编辑/etc/apache2/httpd.conf 文件。找到显示以下内容的行:

LoadModule php5_module libexec/apache2/libphp5.so

改成:

LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so

保存文件,然后运行sudo apachectl configtest 和sudo apachectl restart。将您的浏览器指向phpinfo() 文件,您应该会看到postgres 配置正确。

【讨论】:

    【解决方案2】:

    按照这些步骤进行

    1) 运行 yum install php-pdo_pgsql

    2) 将这些行添加到php.ini

    extension=pdo_pgsql.so
    extension=pgsql.so
    

    3) 重启apache

    完成

    【讨论】:

      【解决方案3】:

      我使用以下方法解决了这个问题:

      brew install php56 --with-mysql --with-homebrew-apache

      然后,添加到 httpd.conf

      LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-20
        • 2015-03-21
        • 1970-01-01
        • 1970-01-01
        • 2014-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多