web-dev-qa-db-ja.com

PHP Mac OS XでのPostgreSQLサポートの有効化

私のMacでコマンド "pg_connect()"を正しく動作させるのは非常に困難です。現在、PostgreSQLデータベースを読み取り、レポートを電子メールで送信するためにPHPスクリプト(コンソールから実行)を作成しています。

_php.ini_ファイルに移動して追加しました

_extension=pgsql.so
_

しかし、次のエラーが発生しました。

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のUnknownに画像が見つかりません
PHP致命的エラー:未定義関数pg_connect()の呼び出し...(blahファイルはこちら)

phpinfo()を実行すると、PostgreSQLについて何も表示されないので、ここでの私の問題は何ですか?

30
Jordan Scales

OS XにバンドルされているPHPバージョンには、PostgreSQLは含まれていません。拡張機能を自分でコンパイルする必要があります。以下にいくつかの手順を示します。

  1. PHPのバージョンを見つける:_php -v_。
  2. 一致するPHPのバージョンをダウンロードします:_curl -O http://us.php.net/distributions/php-5.3.3.tar.gz_。 (この例ではPHP 5.3.3をダウンロードしますが、これはバージョンと一致する必要があります)
  3. ダウンロードしたアーカイブを解凍します:_tar -xzvf php-5.3.3.tar.gz_
  4. PostgreSQLの拡張ディレクトリに変更します:_cd php-5.3.3/ext/pgsql/_
  5. phpizeと入力します。
  6. タイプ_./configure_。
  7. makeと入力します。
  8. タイプ_Sudo make install_。
  9. _php.ini_を追加して、_extension=pgsql.so_ファイルに拡張機能を追加します。 (すでにこれを行っている可能性があります)
  10. Apacheを再起動します。

OS X Mountain Lionのアップデート AppleはXCodeの新しいバージョンからautoconfを削除したため、上記の手順は#5で失敗します。その問題を解決するには:

  1. /usr/bin/Ruby -e "$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"と入力します。
  2. タイプ_Sudo chown -R $USER /usr/local/Cellar_。
  3. タイプ_brew update_。
  4. タイプ_brew install autoconf_。

これでautoconfがインストールされ、上記の手順を使用してモジュールをインストールできるようになります。

72

Home brewを使用する場合、次のような単純なコマンドでこれを解決できます。

brew install php55-pdo-pgsql

他のphpバージョンについては、次を使用して検索します。

brew search pgsql

36
Daniel Cukier

これはOSX 10.9.4でうまくいきました"Mavericks"

ソースのインストール

PHPソースコードをダウンロードしてください。MountainLionとは異なり、リンクするためのヘッダーはプリインストールされていないため、/ usr/include/phpに配置する必要があります。Mavericksには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

PHPの設定

cd /usr/include/php
./configure --without-iconv
Sudo cp /etc/php.ini.default /etc/php.ini

モジュールの構築

Pdo_pgsqlモジュールが必要でした-必要な依存関係がインストールされていると仮定すると、ほぼすべてのモジュールに同じパターンが適用されます。

cd ext/pdo_pgsql

私の場合、次のエラーが発生しました。

Autoconfが見つかりません。 autoconfのインストールと$ PHP_AUTOCONF環境変数を確認してください。次に、このスクリプトを再実行します。エラー:「phpize」が失敗しました

したがって、このコマンドを使用する必要がありました。

brew install autoconf

次に:

phpize

その後、私はやろうとしました:./configure

しかし、私は次の問題がありました:

pg_configの確認...構成が見つかりません:エラー:libpq-fe.hが見つかりません。正しいPostgreSQLインストールパスを指定してください

そのため、解決策は正しいPostgreSQLインストールパスを指定することでした。

./configure --with-pdo-pgsql=/Library/PostgreSQL/9.3/
make
Sudo make install

これにより、pdo_pgsql.soが/ usr/lib/php/extensions/no-debug-non-zts-20100525にコピーされます。

その後、単に追加します

extension=pdo_pgsql.so to /etc/php.ini 

実行php -mすべてが計画通りに進んだことを確認します。

8
Jorge Casariego

Homebrewでphp7/nginx/postgresをインストールした人向け

PostgreSQLモジュールは次の方法でインストールできます。

brew install php70-pdo-pgsql

その後、phpサービスを再起動する必要があります。

brew services restart php70
7
ricardo

OS X El Capitanユーザーは、PHP 5.6。のバージョンをアップグレードすることができます。これは、1つのライナーです。

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.6

にとって php56 brew経由:

brew install php56-pdo-pgsql
3
ThangTD

PostgreSQLは、デフォルトでMAC OS Xの異常な場所にインストールされます。

/Library/PostgreSQL/9.3

上記の場所を指定すると、これを入力できます。

./configure --with-pgsql=/Library/PostgreSQL/9.3
2
YP Leung

昨日アップグレードした後、El Capitanで動作するようにしようとして1日中殺しましたが、httpd.confを変更し、デフォルトのphpモジュール(バージョン5.5.27)からパスを変更するのを忘れていました私がインストールしたもの(バージョン5.6.14)。これは、デフォルトのhttpd.confパスをLoadModule php5_moduleに変更することにより、LoadModule php5_module /usr/local/opt/php56/libexec/Apache2/libphp5.soで実行する必要があります。 OSまたはPHPバージョンをアップグレードして同じ問題に直面している人のための潜在的な解決策としてここに残すことにしました。

2
ievgenii

Mac用のPostgreSQLをダウンロードし、インストール後にスタックビルダーを使用して、EnterpriseDB Apache/PHPスタック全体をエンドツーエンドで立ち上げました。私はこれを可能な時間節約オプションとして言及しますが、おそらくすべての状況に理想的ではありません。 Mac OS Xに同梱されているApacheとpostgresが一度も起動されなかった場合は正常に動作するはずです。

既存のApacheホストアプリケーション(つまり、PostgreSQLのインストール前のレガシー)を安定させるには、新しいEnterpriseDB Apacheをポート81にインストールします(レガシーApacheインスタンスが既に実行されている場合、stackbuilderは新しいポートを要求します)。次に、ポート80で実行されているApacheのhttpd.confでmod_proxyを使用して、PostgreSQLでホストされているアプリケーションにシームレスなユーザーエクスペリエンスを提供します。

0
Net Dawg

makeの間にopensslエラーが発生した場合は、こちらが解決策です

OSXは、インストーラーが1.0.0を検索している間にopenssl 0.98を使用します

手順については、このリンクを参照してください

psycopg2インストールエラー-ライブラリがロードされていません:libssl.dylib

0
Majky