マ〇ナポータル・パスポート申請、爆誕!〜地獄の七日間(まだ続くかも)〜 あと業務アプリのあり方
プロローグ
高校 2 年生になる娘の修学旅行は ✈️ 海外、シンガポール。
娘はパスポートを持っていないので、指定された期限日までに取得しなければならない。
更に取得したパスポート情報は、旅行会社に修学旅行のオンライン申し込みをして、自分でアップロードするのが今どきの修学旅行事情らしい。
「パスポートはオンライン申請が便利です」と学校での説明会を聞いてきた、妻からの案内を鵜呑みにした事により、私の悲劇は幕を開ける。
「便利」の甘い誘惑とマ〇ナの呪縛
Google 先生で調べると、「オンライン申請はじめました」とは、マ〇ナポータルアプリ でパスポート申請が可能なことだと判明。
ふむふむ、マ〇ナポータルアプリ は既にスマホにインストールされとるでぇ、楽勝よ〜\(^o^)/
早速、マ〇ナポータルで、娘のマ〇ナカード読ませて、ログイン、順調 × 2。
「パスポート新規申請があるじゃあないの」と進む。カクカクシカジカと入力を済ませ、その間何度となくマ〇ナカードをスキャンさせられ「いったい何回読ますんだ?」と少し嫌な予感はしつつも、アプリ内で本人の写真撮影完了。「うん、これで昔懐かしのあのインスタント写真機に行かなくて良いじゃない」と、マ〇ナカード・スキャン回数の面倒臭さとトレードオフかと少しだけ自分に納得させる。
更には「中断して保存する」みたいなボタンあるけど「まぁ〜オイラ一気に申請しちゃうし関係ないもんねぇ」と完全スルー。
驚いちゃあいけません、そこは公的アプリ、ここまではまだ申請データを準備したに過ぎず、ここからが本番の申請、さあ準備は整った、いざ申請開始!
アナログとデジタルの無限ループ、そして悪夢のパスワードロック
しかし、プレイボール直後にいきなり際どいインコースを攻めてくる。15,16,17 歳は、親の同意書が必要だと?同意書なるものを探すために、再び先生参上。先生ならば同意書の PDF などすぐに見つけ、スマホにダウンロード。更にはスマホアプリから我が家のプリンタで印刷。完璧な流れ...しかし、この時点で既にデジタルなのか?アナログなのか?判らなくなってきた違和感を感じつつ、もう後には引けぬ、媚びぬ、省みぬ、娘の前で今更、絶対にアナログ申請などはできないのだ。
印刷した同意書に記載して、スマホカメラで写真撮影からの、マ〇ナポータルへアップロードと、再度アナログからデジタルへ昇華させヤレヤレ一段落と思うのも束の間、今度は「容量デカすぎるから駄目だよ〜ん」と言われ、ならばと画像をアプリで解像度下げて、再度アップロード。
ようやく同意書にカタが付いたと思いきや、またもや数回のマ〇ナカードをスキャン。いったい何回読ませるのよ?
更には、マ〇ナカード読ませてるのに、郵便番号だけ入れさせたり、カード有効期限年を入れさせたり、生年月日の欄が「和暦か?西暦か?」と入れさせたり、全くのワケワカメ。
ようやく辿り着いた桃源郷、あぁ愛しのガンダーラ、あとは最後にマ〇ナカードの電子証明書で送信するだけ、電子証明書のパスワードもバッチリ入れた(これを忘れるなどという愚かな事は私には無いのだよフフフッ ( ̄ー ̄)ニヤリ )最後のマ〇ナカードスキャンとなる筈だった。
ここでまさかの「このパスワードはロックされてます。」えっ?マジか?何で?何で?娘の電子証明書なんて一度も使ってないのに?
??な状態ながら一旦その問題は置いといて、ここで強制的に振り出しに戻ることとなり、これまで登録してきた写真だのカクカクシカジカ入力は灰燼に帰す事となった。「中断して保存する」ボタンを押しとけば良かった...。
次回の為に、また写真撮影会とカクカクシカジカ入力を行って今度は「中断して保存する」を押して 〜.dat の中断データをスマホに保存。これでいつでも申請からできる。ヤレヤレだぜ。
鬼と化した私、そしてアナログの小鳥へ…
余分な事に時間を取られつつ、兎に角パスワードロックを解除しようと再び Google 先生参上。
ここで仕入た解除情報は2つ。1つ目は解除アプリを使って申請後、コンビニのキオスク端末で解除。2つ目は、役所で解除の方法。
「ほほ〜ん。解除アプリでコンビニ完結ができる」なんて日本政府もやるじゃないの、見直したぜ!
デジタル申請の鬼と化した私には、解除アプリ一択でしょ!
さあ解除アプリをダウンロード。この時見落としていたが、評価 ☆ がかなりアレなアプリだったみたいだが、そんなのは鬼と化した私の目には一切はいらず、インストール完了。
またまた、カクカクシカジカの入力して、マ〇ナカードを読ませて...。えっ?全く読めないんですが...。何回やっても。
ここで冷静になってレビューを見ることになると粗悪評で埋め尽くされている、仮にマ〇ナカードのスキャンという茨の道を超えても、その先に地獄の写真撮影会という修羅の道があるそうな...。
もう公的アプリ怖くて、デジタルの鬼はあっさり、アナログの小鳥になった。
おとなしくなった小鳥は、役所へ GO。
役所に来たことで、少しアナログ感は出てしまうが「まぁ、この際ハイブリッドも仕方なかろう」これでようやくパスワード解除して、電子申請へ回帰できると思った矢先。
「15 歳以上のお子さんは、委任状が要ります( ー`д ー ´)キリッ」
いやいや、流石の私も持ち物を調べずに来る馬鹿じゃありません。市役所のホームページで、ちゃ〜んと見てきたんだからぁ、そこには「同居の家族はパスワード解除・再設定できる。任意代理人のみ委任状」と書いてあった。役所の方もホームページ記載の文章は間違っている事を認めてくれて、結果的に私のマ〇ナカードの提示で手続き自体は、進められたのだ。そして、少し引っ掛かっている違和感を担当の人に聞いた。「娘の電子証明書パスワードなんて使ったことが無いのにロックされるなんてあるんですか?」
ここで衝撃の事実「15 歳未満で作られたマ〇ナカードには、署名用電子証明書の紐付けがないので、パスワードが埋め込まれていないです」あ~あ~「そうだったかもしれない」そんな事スッカリ忘れていた(TдT)
「その場合は、電子証明書新規申請と委任状が必要なんです」と言われもう一度役所に来ることを覚悟「じゃあ委任状下さい」というと「ご本人宛に郵送しかできません」。3日後くらいに、なんだか無駄に立派な役所の透かし的なのが入った委任状が届く。娘に委任状書かせて、再び役所へ GO!GO〜!
委任状を持っていくと「シールの封筒ありませんでした?」「あったけど、私身内だから裸で持ってきました」「このシール付きの封筒に封印して、こちらに渡して下さい。」と言われたので、その場に封筒に封印して渡した。まぁパスワード書いちゃってるし、そこはね、見ちゃいけないもんね、と納得していたのだが、その後パスワード設定係の人にバトンタッチ...結局思っクソその人中身みてるし〜、更に人前で「このパスワードは、2じゃなくて、Zですよね?」って聞いてるし〜、全然封印付き封筒意味ないじゃん。あれ一枚でも高いだろー結構。
更にこの手続きでも「娘の名前と、自分の名前と、住所 × 2人分」の役所定番メニューを3セットやらされ、ようやく電子証明書を設定完了。しかも中々の混雑窓口で、お昼休み返上でやっている役所の方々、可哀想、何とかしてあげてよ!この変な運用スキーム。考えたの誰?
別れ際に役所の方が「1日〜2日はシステムに反映されないので、3日位おいてから申請して下さい」と言われて「今どき端末使って登録してるのに、翌日反映出来ないなんて、どんなシステムやねん...」と思いつつも4日後。流石にもうええやろ、擦った揉んだしたけど、電子証明書は設定できたし、ここまで来たらカリン塔に登る悟空の様な気持ち「オラ絶対強くなって、絶対パスポートの電子申請してヤッぞ!」気を取り直して自宅で再申請 GO〜。
カリン塔はまだ遠い…無限ループの申請地獄
途中何度もマ〇ナカードを読み込むという 嫌がらせ 試練をクリアしつつ、再び辿り着いたイスカンダル。これで正真正銘最後のスキャンだ〜〜〜!爆裂ゴッドフィッ?!アレッ?
「ログイン時と異なるマ〇ナバーカードが使用されました」
何じゃそりゃー!ログインと違うマ〇ナカードな訳ないでしょうよー。何でなの〜?
前回あまりにも適当なメッセージに騙されたので、今度はこんな適当なメッセージに騙されませんよ私は。Google 先生に登場して頂きましょう。調べるとぉ
■ マ〇ナポータル公式
Q「ログイン時と異なるマ〇ナバーカードが使用されました」と表示されます。どうしたらよいですか。
A「電子証明書の更新手続を行った場合、ログイン時の利用者証明用電子証明書と署名用電子証明書の紐付けがシステム上で反映されるまで約 1 週間程度の時間を要する場合があります。
そのため、電子証明書の更新手続を行ってから 1 週間以上時間を空けていただき、再度申請をお試しください。」
全然、1日〜2日じゃないじゃん。しかも電子端末使っているのに、そんなに遅いって何なのよ。あとメッセージが、本当にトラップすぎて怖すぎるわ。
取り敢えず、あと一週間待ちますか...。オラ本当にカリン様に会えるだろうか?筋斗う...
エピローグ
まず、学校の「パスポートの申請はオンラインが便利」この言葉の危うさを感じる。そもそも高校2年生の場合、署名用電子証明書が入っていないマイナカードの生徒さんが多いのではないか?
そうなると「オンライン申請=便利」にならず、そもそも想定しているほど簡単に申請できない状況のだが、この状況と構造を誰も把握していないから、悪気なく前述の案内になっているのだと思う。
更に署名用電子証明書申請の手続き自体も全てがシームレスにデジタル化されていれば良いが、中途半端なアナログ介入で返って構造が厄介なモノになっている。
そのため安易に「オンライン申請ができる」と学校というオフィシャルがアナウンスしてしまうと「電子でいつも出来るから」と申請を先延ばしにし、いざやろうとすると出来ず、最悪修学旅行の準備期限を迎えてしまうということが起こり得るではないだろうか?
それでも、学校を含め我々は、その公的に準備されたアプリを利用する1ユーザーにすぎない。
一番の問題は、業務アプリに近しい立ち位置のマ〇ナポータル・アプリのメッセージが極めてユーザーにとって分かりづらい物となっている。
メッセージと実態がかけ離れ、誤った方向へユーザーを導いてることだと思う。
出ているメッセージを見ると、メッセージ ID だけは詳細に出ていそうな雰囲気だが、それはデバッグや保守性を高める要素であって、あくまでも開発者が嬉しいだけの情報で、ユーザーには全く無意味な情報だ。
- ①「このパスワードはロックされてます。」実態 →「電子証明書及びパスワードは設定されていません。」
- ②「ログイン時と異なるマ〇ナバーカードが使用されました」実態 →「電子証明書の手続き中です。一週間程度後に再度お試し下さい」
変なバイアスが掛かる様なメッセージならば、いっそ出ないほうがマシと思える。
それでも、ユーザーに伝えるメッセージは、その正確な内容をそのまま伝えるべきだと個人的には思う。セキュリティ上伝えるべきではない事であれば、混乱しないメッセージが望ましい。
また、何度も何度もマ〇ナカードをスキャンして、その先の申請には進めてしまって、最後の最後にエラーとなる点も頂けない。
マイナンバーの状態チェックだけなら、最初のスキャンの時点で判る筈であり、パスポート申請のスキャンでNGにすれば、まだストレスが和らぐ。今の仕様だと最後まで散々進ませてから、ご破産にされるのでたまったものではない。
使いやすいUIとかUXとか、アプリはその点について色々議論されることも多いが、UI、UX以前の問題で、業務、運用の流れ構造を軽視している様に思える節がある。
自分たちが制作する業務系アプリにおいてもそうである。
「区分が正しくありません」や「入力エラー」とか、何のエラーやねん!ってツッコミたくなるようなアプリのメッセージは時折散見するが、自分たちは絶対に使わない様に心がているし、若手にもそう教育している。
今回、マ〇ナポータル・アプリに四苦八苦し、更にはさんざん振り回された(いやまだ振り回され中...)経験から、これを反面教師として、改めて我々のアプリ開発は、業務、運用のニーズをとらえた「最適なメッセージ」や「最適なチェック処理・順序」が重要なのだと肝に銘じよう、と思わせてくれた。
ZendServer WinとDB2Connectで文字化け
ZendServer for Windowsで”IBM i”のDB2に接続し、データ取得すると文字化けする。
具体的なパターンだと、全マイナスと全ダッシュが、それぞれ半角になる。
一瞬Shift-JISのダメ文字かとも思ったけど、実装はUTF-8だし、”表示”は文字化けしなかったから何だろ?
●IBM i上のレコード
− ‐ ー 〜 ―
●Zend Server for Winでレコード取得結果
− ‐ ー 〜 —
●Zend Server for IBM iでレコード取得結果
− ‐ ー 〜 ―
最新のDB2 Connect PE使っても結果は同じだった。
db2_bind_paramも”DB2_PARAM_INOUT”が駄目とか解決できていない問題が幾つかある。
- db2_bind_paramのエラー
Warning: db2_execute(): Statement Execute Failed in ..\ReturnParm.php on line 126 [IBM][CLI Driver] CLI0112E 割り当てにエラーがありました。 SQLSTATE=22005 SQLCODE=-99999
ZendServer8.5 for IBM i(PHP5.6)を入れて・・・
iSUC福岡大会に参加して、モチベーションが上向いているうちに、「よーしZendServer8.5のPHP5.6に更新しよう!」と意気込んでいたら、PHP5.6からCA証明書のチェックが必須となったみたいで、SSL/TLSメール送信でコケてました。
以下の様な事が書いてありました。
「5.6.0 … peer_fingerprint と verify_peer_name が追加されました。 verify_peer のデフォルトが TRUE に変わりました。」
◆参考リンク
ソケット接続実行時エラーログ
exception 'Zend_Mail_Protocol_Exception' with message 'Could not open socket' in .../library/Zend/Mail/Protocol/Abstract.php:277
Stack trace:
#0 .../library/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('ssl://hogehoge.co.jp:xxx')
#1 .../library/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
#2 .../library/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#3 .../library/Zend/Mail.php(1194): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#4 .../library/org/cscweb/util/mail/myMail.php(324): Zend_Mail->send(Object(Zend_Mail_Transport_Smtp))
#5 .../application/controllers/OrderController.php(408): myMail->send()
#6 .../library/Zend/Controller/Action.php(516): OrderController->mailshippinglistAction()
#7 .../library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('mailshippinglis...')
#8 .../library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 .../library/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#10 .../library/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()
#11 .../public/index.php(110): Zend_Application->run()
#12 {main}以下のソースをPHP5.6単体で実行したら
<?php
$fp = stream_socket_client("ssl://www.google.co.jp:443/", $errno, $errstr, 30);
if ($fp === false) {
echo 'NG' ;
throw new Exception($errstr);
} else {
fclose($fp);
echo 'OK' ;
}こんなエラー
Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in .../test.php on line 3 Warning: stream_socket_client(): Failed to enable crypto in .../test.php on line 3 Warning: stream_socket_client(): unable to connect to ssl://www.google.co.jp:443/ (Unknown error) in .../test.php on line 3
そんな訳で「php.ini」に、以下を設定
[OpenSSL] openssl.cafile = /QOpenSys/QIBM/UserData/SC1/OpenSSL/certs/cacert.crt ;openssl.capath = ""
ZENDSVR6のApacehインスタンスを再起動でOKでした。めでたしめでたし。
System i Access for Windows 6.1がやってくれた!
超超久々の投稿でご無沙汰です。活ける屍ですが、一応生きています。
Windows Server 2012 R2 Essentialsをセットアップしていると、”System i Access for Windows 6.1(旧Client Access)”がやってくれた!
散々サーバーセットアップした後に、ひと通り必要な全てアプリケーションもインストールした。
ふと、再起動後サーバーマネージャーを除くと、Essentialsのサービスがコケまくり。
松田優作ばりに「なんじゃこりゃ〜!」と叫びたくなる。サービス血まみれで赤いし!


アプリケーションも相当数入れてたので、何が悪さしたのかさっぱり?折角セットアップしたけど1日前に逆戻りするしかなかった。
この時点で、『アプリのインストール→再起動→サーバーマネージャーのチェック』の”Do While”をするしかないと思った。そしたら、まさかの1つ目のアプリでサーバーマネージャーが、真っ赤になるじゃない!
そう!その1つ目のアプリが、よもやの”System i Access for Windows 6.1(旧Client Access)”
”Essentials”のサービス”Provider Registry Service”が”Net.Tcp Port Sharing Service”に依存していて、芋づる式にコケている。
”Net.Tcp Port Sharing Service”がコケている理由が、調べたらここに載っていたThanks!→ Net.Tcp Port Sharing Service fails to start
確かにプロセスモニターすると”C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config”が「ACCESS DENY」になっている。

ファイルのACL見ると明らかにオカシイ…。

バックアップから復元して比べてみると元のACLはこんな感じ。

内容を比較すると、.NETプロバイダ絡みの記述が追加されている。以下比較。

でも、ACL書き換えるって不味くないですか?IBMさん。CA7.1以降は大丈夫なんですよね?
とりあえず、復元したファイルに、.NETプロバイダ絡みの記述を追加して、”Net.Tcp Port Sharing Service”サービスを再起動したら、無事動きましたとさ。あーとんでもないのにハマった。
CAバージョンとWindowsバージョンの組み合わせ、”.NETプロバイダ”をインストールから外せば、起きない現象かもね。でもインストールのデフォルトが”フルインストール”ですが…。
因みに、この後、”System i Access for Windows 6.1”PTFを当てても、サービスは問題なく動いていますのであしからず。
AS/400にJenkinsを入れて
AS/400(IBM i)にGitを入れたので、さらなる幸せを手に入れるために、Jenkinsを入れた時の事を忘れないようにメモ。
- 実行環境
初回起動時にエラー
Jenkins初回起動時に出たエラーが以下。何か「chmod」絡みのライブラリがないっぽいけど、2回目以降は出てない。
export JENKINS_HOME=/usr/local/jenkins java -jar jenkins.war --httpPort=8089 --ajp13Port=-1 ---省略--- 2012/05/09 13:32:07 hudson.FilePath _chmodAnt WARNING: GNU C Library not available: Using Ant's chmod task instead.
プロジェクトの2回目以降のポーリングでエラー
だたビルドするだけならスンナリ動いた。
GitからClone後に初回のビルドではOK。でも2回目以降のポーリングでエラー。
-
- エラーも文字化け。EBCDICで吐いてるっぽい。

初めは、JenkinsをCLからQP2SHELLで起動してたんだけど、これだと駄目。QP2TERMもQSHもモチロン駄目、ssh経由だとOK。ssh経由ならQP2TERMでもOK。(Javaの環境がネイティブから走るとダメなのかな?QP2TERMだと$HOME/SystemDefault.propertiesで何か設定しないと駄目かもしれん。)
ダサい解決だけど、ssh -Tオプション使って、スクリプト書いて、それをQP2SHELLで起動すると上手くいった。
それにしても、ジョブが一杯付いていてダサい。

MemoryMonitor警告
前述の対処で、ビルド自体は全然問題ないけど、裏で警告を吐いていて気になった。
May 18, 2012 12:54:21 PM hudson.node_monitors.AbstractNodeMonitorDescriptor$Record run
WARNING: Failed to monitor master for Free Swap Space
Throwable occurred: java.io.IOException: No suitable implementation found: os.name=OS/400 os.arch=PowerPC sun.arch.data.model=32
at org.jvnet.hudson.MemoryMonitor.obtain(MemoryMonitor.java:86)
at org.jvnet.hudson.MemoryMonitor.get(MemoryMonitor.java:57)
at hudson.node_monitors.SwapSpaceMonitor$MonitorTask.call(SwapSpaceMonitor.java:103)
at hudson.node_monitors.SwapSpaceMonitor$MonitorTask.call(SwapSpaceMonitor.java:99)
at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
at hudson.node_monitors.SwapSpaceMonitor$1.monitor(SwapSpaceMonitor.java:83)
at hudson.node_monitors.SwapSpaceMonitor$1.monitor(SwapSpaceMonitor.java:81)
at hudson.node_monitors.AbstractNodeMonitorDescriptor$Record.run(AbstractNodeMonitorDescriptor.java:202)追っていくと、topコマンドでモニターしている?っぽい。PASEにtopコマンドが無いんで、そんな感じ。AIXなら"top"入れられるみたいだけど...。
XMLのパースエラー
こっちはAS/400だからって訳じゃないかもだけど、cpdのxmlパースエラーなのか、dryプラグインで落っこってそう。まだ、全然追ってない。
EVERE: Parse Error at line 2 column 33: Document root element "pmd-cpd", must match DOCTYPE root "null".
Throwable occurred: org.xml.sax.SAXParseException: Document root element "pmd-cpd", must match DOCTYPE root "null".
---省略---
Throwable occurred: org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
---省略---
at org.apache.commons.digester3.Digester.parse(Digester.java:1642)
at org.apache.commons.digester3.Digester.parse(Digester.java:1701)
at hudson.plugins.dry.parser.cpd.CpdParser.accepts(CpdParser.java:48)
at hudson.plugins.dry.parser.DuplicationParserRegistry.parse(DuplicationParserRegistry.java:70)
Zend Server CE 5.0 for IBM iのdb2_bind_paramで
Zend Server CE 5.0 for IBM i(PHP 5.3 Ver)で、最初からインスコされているIBM_DB2のPECLはバージョン”1.8.4”です。このバージョン”1.8.4”のPECLは、既知のバグがあり、関数、クラス内で「db2_prepare → db2_bind_param → db2_execute」をすると、db2_bind_param関数で割り当てる、変数のスコープがどうもおかしいようで、以下のようなエラーになります。
Warning: db2_execute() [function.db2-execute]: Value Not Bound in hoge.php on line XX Warning: db2_execute() [function.db2-execute]: Binding Error 3 in
PECLのサポートサイトより
- http://pecl.php.net/bugs/bug.php?id=17004 「 #17004 design problem with function db2_bind_param」
- http://pecl.php.net/bugs/bug.php?id=6528 「 #6528 scoping problem in db2_bind_param」
最新のPECLでは、この既知の問題は解決しているようなので、IBM iのZend Server CEに、2011.09.28現在最新の”1.9.2”を導入しました。
いったんは、IBM i上でビルドを試みましたが、「ibm_db2.so」は出来上がるものの、ファイルのバイト数が明らかに小さく、起動時にエクステンションエラーになってしまいました。結果的にはAIX上でビルドしたエクステンションは、正常通り動作しました。「db2_prepare → db2_bind_param → db2_execute」も問題なく使えます。
もし、バイナリが欲しい方がいたら、このブログにコメント下さい。1.9.2の”ibm_db2.so”を提供します。但し、使用は自己責任で。
ビルドの際に、宣言エラーが抜けている様なので、以下の箇所を追加しました。
-- エラー1 ../ibm_db2-1.9.2/ibm_db2.c: In function '_php_db2_connect_helper': ../ibm_db2.c:2109: error: 'conn_handle' has no member named 'c_i5_allow_commit' -- 対応:「ibm_db2.c」に宣言を追加 114 long c_i5_allow_commit; -- エラー2 ../ibm_db2-1.9.2/ibm_db2.c: In function '_ibm_db_chaining_flag': ../ibm_db2-1.9.2/ibm_db2.c:6761: error: 'SQL_ATTR_CHAINING_BEGIN' undeclared (first use in this function) -- 対応:「php_ibm_db2.h」に定数を追加 302 #ifdef PASE /* i5/OS ease of use turn off/on */ 303 #ifndef SQL_ATTR_CHAINING_BEGIN- 304 #define SQL_ATTR_CHAINING_BEGIN 2464 305 #define SQL_ATTR_CHAINING_END 2465 306 #define SQL_IS_POINTER -4 307 #endif- 308 #endif /* PASE */
PECL 1.9.2の確認

とりあえず、この情報が役立つか判らないけど、PECLのサポートに上げておいた。
http://pecl.php.net/bugs/bug.php?id=24382
