AS400(System i)で動作している基幹システムを管理している者です。
WindowsServer上のphpで動作するWebアプリを使って、AS400のデータを照会し、PCにDownloadする処理を作ろうと思っているのですが、AS400へのアクセスができずに困っています。
具体的には
Fatal error: Call to undefined function db2_connect() in C:\Inetpub\wwwroot\........php on line 3
というようなエラーです。
JDBCドライバはjt400.jarを同じWindowsServer上に置き、環境変数に
set CLASSPATH=%CLASSPATH%;(jt400.jarの置いてあるフォルダ)
と設定してあります。
あるいはWindowsServerのphpではdb2関数は何等かの方法で追加インストールする必要があるのでしょうか?
IBMに問い合わせても、JDBCドライバに関しては自社製品でないせいもあり、全く教えてくれませんので、経験者の方のお知恵を拝借したくお願い致します。
No.1ベストアンサー
- 回答日時:
phpからJDBCドライバーは使えんぞなもし(ひょっとしたらそういうエクステンションがあるのかも知れないけど)。
phpではデータベースに対する接続はDBMSごとにエクステンションというもので管理している。
エクステンションというのは、phpのスクリプトから呼び出せる関数を増やしてくれる仕組みだ。
現在DB2エクステンションが登録されていないためにdb2_connectという関数が未定義になっている訳だ。
で、エクステンションの設定はphp.iniで行う。
参考URLを二つほど紹介しておきましょう。
http://www.php.net/manual/ja/book.ibm-db2.php
http://pecl.php.net/package/ibm_db2
いっそのことIBM DB2 ODBCドライバーを入手してWindows上でODBCによる接続設定を行い、phpからはODBCブリッジを利用して接続するという方が楽かも。もちろんODBCの制限に引っ張られるけど。
この回答への補足
補足します。
JDBCではなく、ODBCドライバを使ったら、難なく接続できました。
ただし、phpのdb2関数ではなく、odbc関数を使う形になります。
拡張モジュールをインストールしなくても標準で使えました。
db2関数を使った場合とのレスポンス比較は判りませんが、取りあえず繋がるには繋がりましたのでこれで作り込んでみたいと思います。
両方ためされた方がおられましたら、情報頂けるとありがたいです。
anmochi コメント有難うございました。
JDBCは使えないんですか...
IBMのアンサーラインではJDBCドライバか、IBM DB2 Connectを使えということを言っていました。前者はIBM製品ではないので後者のほうを薦めていました。
通信の問題もエクステンションが解決してくれるのでしょうか?
でもこれはプロトコルでいうと下層の話だと思いますので、このエラーは関数がphpに実装されていないというエラーのようなので、教えて頂いた拡張モジュールをインストールする必要はあるんですね。
コンパイルされたDLLが無いようなので、コンパイルするのが私にはハードルが高そうですが調べてみます。
どうも有り難うございました。
No.2
- 回答日時:
> IBMのアンサーラインではJDBCドライバか、IBM DB2 Connectを使えということを言っていました。
> 前者はIBM製品ではないので後者のほうを薦めていました。
> 通信の問題もエクステンションが解決してくれるのでしょうか?
ノー、通信に責任を持つのはIBM DB2 Connectの仕事。
IBM DB2エクステンションはPHPとIBM DB2 Connectの橋渡しをするだけ。
しかしながら、IBM DB2 Connectって管理ツールじゃないですか?
IBM Data Server Clientというのがあればいいんじゃなかろうか。
いや、私も開発はJDBCでしかやったこと無いので正確なツール名は分からないのだが、
とにもかくにも、まずIBM DB2サーバーとIBM DB2クライアントがあって、例のエクステンションは
IBM DB2クライアントの機能をPHPから直接呼び出せるようにするためのいわばラッパーなのです。
なので、まずそのWindowsサーバーにJDBCじゃないIBM DB2クライアントを入れるのが先決。
ODBCで接続できているという事は既に入っているはず(DB2 ODBCドライバーもODBCに対してDB2クライアントの機能を提供するもの)なので、誰かにエクステンションをコンパイルしてもらうだけでdb2_connect系が使えるようになるはずですよ。
コメント有難うございました。
お恥ずかしいですが、コンパイルの仕方もよく判っていないので安直なODBCのほうを選びました。勉強になりました。どうも有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- その他(SNS・コミュニケーションサービス) 【至急】Microsoft teamsログインできないループ・・ 3 2023/05/17 13:17
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- 中古パソコン 中古PCを売る時、OS(Windows11)はどんな状態にするのが親切ですか? 4 2022/12/15 17:08
- サーバー Windows2019CALとRDS CALについて 1 2022/06/19 13:48
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
postgresqlの接続ポート5432か...
-
CSEを利用して、postgreSQLの勉...
-
PostgreSQLドライバの登録。 Ma...
-
MySQLとPostgresの同時使用
-
POSTGRESのデータの格納場所は...
-
postgreSQLに複数行(改行され...
-
コマンドプロンプト
-
phpMyadminのCSV抽出時の改行コ...
-
Pythonがインスールできない
-
accessのmdbファイルを他のパソ...
-
PostgreSQLで"pg_dumpall -f da...
-
RSHコマンドでのsqlplusの起動
-
apacheのインストールのエラー...
-
postgresql のフルバキュームみ...
-
AccessからOracleDBへのリンク...
-
デフォルトのCLIENT_ENCODINGを...
-
initdb: command not find...
-
PostgreSQLが起動しない・・・
-
JDBCのバグ?それともプログラ...
-
postgresqlの国際化言語のサポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
postgresqlの接続ポート5432か...
-
CASEの中にCASE
-
PostgreSQLドライバの登録。 Ma...
-
PHPからのpostgresDBのテーブル...
-
PHPで、PostgreSQLのエラーコー...
-
音楽用語
-
CSEを利用して、postgreSQLの勉...
-
PostgreSQLの管理ツール
-
エラー表示
-
AS400へのphpによるJDBC接続
-
windows版postgresql 異なるバ...
-
MySQLとPostgresの同時使用
-
Windows10でQuickTimeがインス...
-
Access フォーム「使用可能」...
-
PostgreSQLで集約関数をネスト...
-
postgresqlでのトランザクショ...
-
Windows10がインストールできま...
-
Universalインストーラが勝手に...
-
odbc接続処理が遅い
-
POSTGRESのデータの格納場所は...
おすすめ情報