json_code()が使えなくて…

タイトルが、「何もいえなくて…夏」に似てると思った。

自宅のxampp環境で使えていたjqueryのeditinplace。わーわーっと勇んで会社のCentOSに導入してみたら、なんと動かないwwwなける。そろそろ心が折れそう。

・やっていたのはドロップダウンリストの非同期通信でその場で更新する類のもの。
・CentOSの環境では、(本来はクリックするとドロップダウンリストになる)クリックした箇所が何の文字列も返さず、空白になる。
・空白になるわけで、リストも表示されず、当然更新もできません。とほほ。
・(当たり前なのか)Apacheのログファイル関連には何ものっておりませんでした。
・jsファイルから呼ばれるcakephpのリスト取得のコントローラーを直接URLからたたく。(これは必須だね)
→なんもでてこん。はて?本来ならリストの中身が出てきてほしいんだが・・・・。
(jsファイルではcakephpのリスト取得のコントローラー/メソッドを呼び出し、json_code()で出力してるだけ。

で、なんで!なんで!なんで!もういやだ!死ぬ!…にはならないけどもう疲れたんだよおっさん。と思っていたのだが、最近家人が「CentOSって標準だとmb_stringってインストールしないと使えないんだよ!」といわれたのがすごく気になった。もしかしてさ・・・json_code()っていうのも何らかのインストールが必要なんじゃね?と思って「json_encode php インストール」で調べてみましたよ。はい、一番初めに出てきたこちらがまさにビンゴでした。私の場合、

・pecl install jsonしたら怒られた(そんなコマンドない)
・まずはphp-develをyumコマンドいれでいれてみる。入ってたら怒られるから心配するな!
・そのあとpecl install json してもさらに怒られたのでphp-pearもいれる。yumコマンドね。
・これでjsonがインストールできました!pecl install jsonが動く!
・そのあと/usr/lib/php/modules/json.so が作成されてるので/etc/php.d/json.iniを作成し extension=json.so と記述。
・その後アパッチは再起動して差し上げる。
・さあ動いたよ!もし動かなかったら…。うーん。app/config/core.phpのデバッグ値はちゃんと0かな。そんくらいしか…。

xampp環境はいわゆる至れり尽くせりの環境なので、十分なライブラリや環境がそろってしまっているので、それが当たり前だと思いがちなんだけど…。今度は「動かない」と思ったらCentOS環境では、「インストールされてるのかな?」ということを疑うようにしないとな。
さてひとつ勉強になりましたよっと。同じように迷ってる人の参考になれば幸いです。

※3月に本番サーバで同じ現象にあい(JSONが使えない)、この記事を読み返したのにもかかわらず大慌てしたわけですが、環境によってはjson.so がダウンロードされた場所が違う場合があります。実際、本番サーバでは/usr/lib ではなく /usr/lib64というフォルダにありました。これでちょっとテンパりましたが、上記の通り、/etc/php.d/json.iniを作成し extension=json.soを記述し、ウェブサーバを再起動で問題なく稼動。64bitということでlib64フォルダにダウンロードされる場合もあるようです。ご参考に。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中