PDA

View Full Version : PHPのPostgreコマンドがエラー


atom
2002/02/05, 12:26 AM
現在、WinME+Apache1.3.19+PHP4.1.1+PostgreSQL7.1.3でローカルテストをしています。

現在のテスト内容は、
<?php
$dbnam = "Administrator";
$lnk = pg_pconnect ("dbname=$dbnam")
or die ("接続($dbnam)できませんでしたaa<BR>\n");
print ("接続($dbnam)に成功しました<BR>\n");
?>
ですが実行すると、pg_connectのところで次のようなエラーが発生し、停止してしまいます。
Fatal error: Call to undefined function: pg_close() in c:\my documents\my webs\xrea\atom5\php\pgxrea.php on line 3

これは、pg_connect関数が未定義ということですが、PHPのオンラインマニュアルや書籍も使用できてるみたいです。
また、旧バージョン方式の
$lnk = pg_pconnect ("","","","", $dbnam)
と変更しても結果は同じでした。

PHPのバージョンに問題があるのでしょうか?
ご存知の方がいましたら、よろしくお願いいたします。

pascal
2002/02/05, 01:17 AM
WindowsではPHPを使ったことがないのではずしてたらごめんなさい。

PostgreSQL関数が未定義ということであれば恐らくPostgreSQLのモジュールが入っていないのでしょう。
マニュアル (http://www.php.net/manual/ja/install.windows.php)によるとPostgreSQLのモジュールを使いたい場合はphp.iniを編集しないといけないみたいです。
この行の先頭の”;”を消すと良いと思います。
;extension=php_pgsql.dll

すでにやっておられているのであればちゃんと動いているか
<? phpinfo(); ?>
で確認してみてください。

atom
2002/02/05, 02:02 AM
急いで、問題箇所を調査しましたら、;が付いてましたので外しまして再実行しましたが結果は同じでした。

;extension=php_pgsql.dll

ここを外しました。

<? phpinfo(); ?>
に関しては、正常に表示されますし、いくつかのPHPサンプルは正常です。
また、自作のPHP+MySQLの掲示板も正常に動くのです。

なぜか、Postgre関係の関数だけが「Call to undefined function:」のエラーが出るのでなんか簡単なミスではないかなあと思っているのですが、この件を2、3日やってまして、頭が煮えてます。

なんか、皆さんには当たり前の肝心のところを見落としているのではないかなあと思います。
そういった意味では、PASCALさんのレスは有効でした。

引き続き調査してみます。m(__)m

atom
2002/02/05, 03:08 AM
すみません。 急ぐあまりに2つほどミスを侵しました。
1つは、Windowsの再起動をしていなかったこと。
もうひとつは、php.iniはWindowsフォルダではなく別のphp.iniを変更していたことでした。

そして、Windowsフォルダのphp.iniを正しくコメントを外し、Windowsを再起動して、Apacheを起動したところ、今度は新しいエラーがApacheの起動時に表示されました。

PHP Warnig: Unable to load dynamic library './php_pgsql.dll' - このアプリケーションの実行に必要なライブラリ ファイルの 1つが見つかりません。

です。

それで、調査すると「apache\php4\extesions」フォルダの中にありましたので、試しに、Windows\systemフォルダとapache\php4\dllsフォルダ両方にコピーして、Windowsの再起動を試みましたが、結果は同じで、Apache起動時に上記の「ライブラリが見つからない」とのメッセージが出ます。

このDLLはどこにコピーしておかなければならないのでしょうか。
前述のphp.ini内の「extension=php_pgsql.dll 」とは、どこのフォルダを指すのかわかる方いらっしゃいませんか?

ここが、できればうまくいくような気がしています。
たびたびで申し訳ありませんが、詳しい方がいらっしゃいましたら、よろしくお願いいたします。m(__)m

pascal
2002/02/05, 01:00 PM
マニュアル (http://www.php.net/manual/ja/install.windows.php) をみると

'php.ini' ファイルを編集して下さい。
'extension_dir' の設定値を php-install-dir または 'php_*.dll' を置いた場所に変更する必要があります。 例えば、c:\php になります。

とありますので、このextension_dirの設定を確認してみるとどうでしょうか?
私もあまり的確なアドバイスができないので、上記マニュアルをもう一度良く読んでみてください。

atom
2002/02/05, 01:12 PM
PASCALさんご指導ありがとうございます。

実は、私もなんか単純なこととは思いつつ、情報不足でしたし、現在持っている書籍にも載っていませんでした。

ホームページもあれからかなり見ましたが、ご指摘のように「php.iniを変更します。」と言う記述がほとんどでしたので、見落としてました。
すみません。

そこで、私が他にできる方法といえば、本屋さんで立ち読み(いけないこととは知りつつ、でも書籍は今までかなりの数買ってますから、少々は多めに見てもらえるでしょう。)、そうするとある書籍に、PASCALさんと同じ事を記述している書籍がありました。

その本は残念ながら買ってはいませんが、もしやと思い、変更後再起動しましたら、実行できるようになりました。(^o^)丿
もう、とっても嬉しいです。

ありがとうございます。

後は、細かなチェックや構文を記述していくだけです。
まだまだ、不安な部分もありますが、頑張ってみます。

本当にありがとうございました。

atom
2002/02/05, 01:21 PM
PASCALさんが、指摘されている箇所をもう一度読み直しましたら、確かに書かれていました。
あのマニュアルも結構読んだつもりだったんですが、今まであくまでも「つもり」だったようです。

せっかくアドバイスしていただきながら、有効活用できなかった自分を反省しています。
もっと、気持ちを落ち着けて取り組むように努力したいと思います。

本当に、ご迷惑おかけいたしました。m(__)m

pascal
2002/02/05, 11:16 PM
phpのマニュアルページは最初はとっつきにくいと思いますが何度か探し回るとコツがつかめて、すぐに必要な情報が見つかるようになると思います。

あと余計なお世話かもしれませんが、
ローカルで動くようになったらxreaのサーバーにアップするんでしょうか?もしそうならpg_connectの部分は修正が必要になります。あとWindows版でもshift-jisは問題が起きやすいらしいので、プログラムはeuc-jpで書くのがおすすめです。;)