私の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について何も表示されないので、ここでの私の問題は何ですか?
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.gz
_cd php-5.3.3/ext/pgsql/
_phpize
と入力します。./configure
_。make
と入力します。Sudo make install
_。php.ini
_を追加して、_extension=pgsql.so
_ファイルに拡張機能を追加します。 (すでにこれを行っている可能性があります)OS X Mountain Lionのアップデート AppleはXCodeの新しいバージョンからautoconf
を削除したため、上記の手順は#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
がインストールされ、上記の手順を使用してモジュールをインストールできるようになります。
Home brew
を使用する場合、次のような単純なコマンドでこれを解決できます。
brew install php55-pdo-pgsql
他のphpバージョンについては、次を使用して検索します。
brew search pgsql
ソースのインストール
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
すべてが計画通りに進んだことを確認します。
Homebrewでphp7/nginx/postgresをインストールした人向け
PostgreSQLモジュールは次の方法でインストールできます。
brew install php70-pdo-pgsql
その後、phpサービスを再起動する必要があります。
brew services restart php70
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
PostgreSQLは、デフォルトでMAC OS Xの異常な場所にインストールされます。
/Library/PostgreSQL/9.3
上記の場所を指定すると、これを入力できます。
./configure --with-pgsql=/Library/PostgreSQL/9.3
昨日アップグレードした後、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バージョンをアップグレードして同じ問題に直面している人のための潜在的な解決策としてここに残すことにしました。
Mac用のPostgreSQLをダウンロードし、インストール後にスタックビルダーを使用して、EnterpriseDB Apache/PHPスタック全体をエンドツーエンドで立ち上げました。私はこれを可能な時間節約オプションとして言及しますが、おそらくすべての状況に理想的ではありません。 Mac OS Xに同梱されているApacheとpostgresが一度も起動されなかった場合は正常に動作するはずです。
既存のApacheホストアプリケーション(つまり、PostgreSQLのインストール前のレガシー)を安定させるには、新しいEnterpriseDB Apacheをポート81にインストールします(レガシーApacheインスタンスが既に実行されている場合、stackbuilderは新しいポートを要求します)。次に、ポート80で実行されているApacheのhttpd.confでmod_proxyを使用して、PostgreSQLでホストされているアプリケーションにシームレスなユーザーエクスペリエンスを提供します。
make
の間にopensslエラーが発生した場合は、こちらが解決策です
OSXは、インストーラーが1.0.0を検索している間にopenssl 0.98を使用します
手順については、このリンクを参照してください