The mysql driver is not currently installed と言われて怒られた話。

今日、Zend Frameworkで組まれたWebアプリを動かしたらこんなエラーが出た。

Fatal error: Uncaught exception ‘Zend_Db_Adapter_Exception’ with message ‘The mysql driver is not currently installed’

mysqlドライバーがインストールされてないから使えませんよ>< ってことかなぁ。phpinfo()で状況を見たら、確かにmysqlモジュールは読み込まれてなかった。

昨日までは動いていたんですけどね(´;ω;`)  とりあえずphp.iniにextensionでmysql.spやらpdo_mysql.soあたりの記述がされてないなかなーと思って見てみたけどそれもしっかり書かれていた。

PHPだけじゃないかもしれないと思い、Apacheのエラーログをみてみると、なんだか怪しい記述を発見。

PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mysql.so’ – libmysqlclient.so.15: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/mysqli.so’ – libmysqlclient.so.15: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/lib/php/modules/pdo_mysql.so’ – libmysqlclient.so.15: cannot open shared object file: No such file or directory in Unknown on line 0

おお……問題の箇所どんぴしゃりなエラーですな。共有オブジェクト「libmysqlclient.so.15」が開けませんよ~ということですかね。
試しにfindコマンドでこのファイルを探してみたら、/usr/lib/mysql に入っていました。コイツ自体はシンボリックリンクの模様。実体は「libmysqlclient.so.15.0.0」っていう名前でした。

ファイルはあるのに読み込めないということは、リンクを繋ぎ直してやればいい、ということで、ldconfigコマンドで共有オブジェクトのリンクを更新してみました。

# ldconfig -v | grep libmysql

しかしお目当ての文字列は出てこず。

設定ファイルであるld.so.confの中身を見ると、以下の記述がありました。

include ld.so.conf.d/*.conf]

操作していた当時は特におかしいと思わなかったのですが、「]」って本来いらない文字列ですよね。
この時はどうしても読み込まないので、デフォルトの共有ディレクトリ直下(/usr/lib)に「libmysqlclient.so.15」をコピーしました。

# cp /usr/lib/mysql/libmysqlclient.so.15 /usr/lib

これでまたldconfig -v | grep libmysql をやってみたら、やっと出て来ました;;

Webサーバーを再起動して一応一件落着。

解決した後、ld.so.confの怪しい記述を修正してみました。

include ld.so.conf.d/*.conf

この状態でもう一度ldconfigを実行したら、しっかり出てくるようになりました!

# /sbin/ldconfig -v |grep libmysql
libmysqlclient_r.so.15 -> libmysqlclient_r.so.15.0.0
libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
libmysqlclient_r.so.15 -> libmysqlclient_r.so.15
libmysqlclient.so.15 -> libmysqlclient.so.15

ダブってしまっているので暫定的に作ったリンクは削除して、重複を解消して今度こそフィニッシュ。

間違いの元は記述ミスだったんですね……まじつらいわ(´;ω;`)

「Splashtop 2」 でマビノギを動かしてみる。

なんか微妙に反響があったみたいなので……!!

前回のエントリで「リモートアプリでマビノギを動かしてみる」というネタを展開しましたが、その中でもとりわけ良い使用感だった「Splashtop 2」について、もう少し突っ込んで書いてみます。

“「Splashtop 2」 でマビノギを動かしてみる。” の続きを読む

マビノギをリモートデスクトップアプリで動かしてみる。

皆様、ファンタジーライフをエンジョイしてますか?

私はファンタジーライフを絶賛エンジョイ中です。他の人からはいろいろ白い目で見られるかもしれませんが、とにかくエンジョイしています!!><b

でも、ファンタジーライフにどっぷり浸かるということは、すなわちリアルライフを少しづつ犠牲にする、ということでもあります。どっちも両立しておきたいチキンな私には、この状態には耐えることができないわけですよ!(´;ω;`)

そこで、リモートデスクトップを使ってマビノギを監視してみることにしました。これでユビキタスファンタジーライフ(死語?)が送れますよ!

“マビノギをリモートデスクトップアプリで動かしてみる。” の続きを読む

wsdl2php を使ってSOAPクライアント用PHPスケルトンコードを生成してみる。

「SOAP?WSDL?なんのことかさっぱりわからんちん( -ω-)」状態から半日過ぎ、WSDLと言われる呪文を唱えてWebサーバーとやり取りするんだな、というところまでようやくたどり着きました。

そこで、サーバーに司令を送るためのクライアントを、SOAPサーバーが参照しているWSDL文書をもとにシコシコ書いてたんですが、数行書いたところで早くも折れましたorz

そういえば、風のうわさによれば、Java界隈には「wsdl2java」という、手書きでいちいち書くのを数秒かからずに終わらせてくれる魔法のようなツールがあるというではないですか!
こ、これはもしや「wsdl2xxx」のノリでPHPでも出ているのでは!?とグーグル先生に聞いてみたら、ほんとにそのままのネーミングでありましたwww

wsdl2php – http://www.urdalen.no/wsdl2php/

いかにもパパっと手早くやってくれそうな感じがしますね!!ちょーわくわくしますね!!でも日本語の記事が無いんですね!(´;ω;`)

仕方ないので、俺の雰囲気英語力でそれっぽい記事を読んで見ることにしました。以下に続く使い方はこの記事に書いてある内容と同じなので、読める人はそっちを読んだほうがいいですよ!

IT Workarounds: Simple SOAP client with wsdl2php using WSDL – http://itworkarounds.blogspot.jp/2011/10/simple-soap-client-with-wsdl2php-using.html

ちなみにうちの鯖の環境はこちら↓。

  • CentOS 5.7
  • apache 2.2.3
  • PHP 5.3.3
  • php-pear 1.4.9

※すべてLinuxのコマンドライン上での操作です。
はじめに、公式サイトのsourceforgeから最新のpear.tgzファイルをDLしてきます。
[crayon-69758cbc9c897503656813/]
pear install コマンドでインストール。
[crayon-69758cbc9c89f836138444/]
インストールに成功したら、「wsdl2php」コマンドが有効になっているはずなので、wsdlファイルのパスを投げてPHPコードを生成します。
[crayon-69758cbc9c8a0290402688/]
こうすると、カレントのディレクトリに生成されたPHPコードが置かれているはずです。

 

ここまで特につっかえることなく進んじゃいましたので、「できないよ~(´;ω;`)」って言われてもわかりません!ごめんなさい><

ではでは~(´・ω・)ノシ

jQuery上でFileオブジェクトを取得する方法

机の上にそんなメモが転がっていたので、捨てる前にメモ。

HTML5のFileAPIを通じてファイルオブジェクトを操作する際に、何処をいじったらいいのか分からなかったのでメモしたんだと思われる……。自分で書いたのに思い出せないとかどんだけ前の話なんだ;; 何処で書いたコードなのかも分からない(´;ω;`)

$(‘#input-file’).props(‘files’)[0]

配列要素の中にFileオブジェクトが入っているみたい。ファイルが複数あるなら1,2,3……といった具合にアクセスすればよろし。

参考にしたサイトはこちら。
 jQuery で HTML5 FilesAPI ファイルオブジェクトのプロパティにアクセスするには – MT Systems

リンクが紫色(訪問済リンク)だったのでおそらくそうだろう。さっきから語尾があやふやですが気にしないでください俺がポンコツなだけですm(__)m

そしてもうひとつ、File APIについての記事。参考になると思います。
JavaScriptでファイル操作!? File APIを使いこなそう - @IT

それではこれにて~(´・ω・)ノ