現在、CentOs5.5でPHP5.3.6をインストールしたのですが

インストール終わった後に、php -v を行うと
PHP Warning: PHP Startup: json: Unable to initialize module
Module compiled with module API=20060613
PHP compiled with module API=20090626
These options need to match
in Unknown on line 0

となってしまいます。
pecl install json を実行したのですが、
downloading json-1.2.1.tgz ...
Starting to download json-1.2.1.tgz (17,780 bytes)
......done: 17,780 bytes
11 source files, building
running: phpize
Cannot find config.m4.
Make sure that you run '/usr/bin/phpize' in the top level source directory of the module
ERROR: `phpize' failed
となってしまいます。
php -m で見ると、jsonは1.2.1でインストールされているのですが
PHP Warning:の表示をされないようにするのは、json.soを
インストールしないといけないと思うのですが
インストール方法などわかりますでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/07/06 13:25:53
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:JULY No.4

回答回数966ベストアンサー獲得回数247

ポイント56pt

Scientific Linux 6 で、標準パッケージに含まれるの PHP(Ver 5.3.2。PEAR は 1.9.0)で試してみた所、同じ現象になりました。


で、json-1.2.1.tgz を展開して、その上で phpize を実行する分には、正常に実行されます。


で、なぜ pecl install json で失敗するのかを調べてみたのですが、分かったのは、pecl install json とした場合、phpize が呼び出された時点では、何故か package.xml しか展開されていませんでした。


確認方法は、phpize(実態はシェルスクリプト)の最初の方に「ls -al >/tmp/ls_result」という行を加えて pecl install json を実行し、/tmp/ls_result の中身を確認しました。


ファイルのダウンロードや展開は、PEAR 側の処理のようで、その部分は追っていないのですが、どうも、PEAR 側のバグのように思えます。ただ、json のパッケージが 2006 年と古いため、悪いのは PEAR 側なのか、json 側なのかは微妙です。


The open-source code library for PHP

英語ですが、上記ページに同様の現象が報告されていて、それに対する回答としては、「今時の PHP は自前で json を持っているから、そっちを使え」みたいな回答になっています。

id:hopefully

いろいろ、検証および調査ありがとうございました。

こちらで問題なく完了しましたー。

2011/07/06 13:24:58

その他の回答3件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247

ポイント14pt

PECL - The PHP Extension Community Library [dozo dokuwiki.php]

上記ページの「PECL ハマリポイント」-「PHPのバージョンアップ」に書かれている問題(php.ini の extension_dir に関する問題)のように思われますが、どうでしょうか?

id:hopefully

pecl install zip-1.10.2.tgz

で、やったら、

PHP Warning: PHP Startup: zip: Unable to initialize module

Module compiled with module API=****

PHP compiled with module API=****

These options need to match

in Unknown on line 0

は解消されました。

推測で申し訳ないのですが、jsonも問題は

Module compiled with module APIとPHP compiled with module API

の日付が一致してないのが駄目なのかなって思うのですが。。

コマンドから実行するときや、apache再起動時に

メッセージが上がってくるのです。

PHP自体はプログラム動いております。

2011/07/04 17:08:53
id:la-la-land No.2

回答回数58ベストアンサー獲得回数6

id:hopefully

which php

/usr/bin/php

でしたたね、

pecl install zip-1.10.2.tgz

などは通常に出来るんですよね・・

jsonだけはまってます。

2011/07/04 17:05:15
id:la-la-land No.3

回答回数58ベストアンサー獲得回数6

ポイント1pt

http://www.orsp.net/blog/archives/1842

php-develが入ってないんでしょうか。

リンク先はdebian系なので

centOSだとyum install php-develとか?

id:hopefully

いろいろ、回答ありがとうございます。

PHPはソースからビルドしたので、yumで

develは特に入れてないです。

むしろ、yumで勝手に古い、phpをインストールされるので

実行出来ないかもですね。

ありがとうございます。

2011/07/06 13:16:19
id:JULY No.4

回答回数966ベストアンサー獲得回数247ここでベストアンサー

ポイント56pt

Scientific Linux 6 で、標準パッケージに含まれるの PHP(Ver 5.3.2。PEAR は 1.9.0)で試してみた所、同じ現象になりました。


で、json-1.2.1.tgz を展開して、その上で phpize を実行する分には、正常に実行されます。


で、なぜ pecl install json で失敗するのかを調べてみたのですが、分かったのは、pecl install json とした場合、phpize が呼び出された時点では、何故か package.xml しか展開されていませんでした。


確認方法は、phpize(実態はシェルスクリプト)の最初の方に「ls -al >/tmp/ls_result」という行を加えて pecl install json を実行し、/tmp/ls_result の中身を確認しました。


ファイルのダウンロードや展開は、PEAR 側の処理のようで、その部分は追っていないのですが、どうも、PEAR 側のバグのように思えます。ただ、json のパッケージが 2006 年と古いため、悪いのは PEAR 側なのか、json 側なのかは微妙です。


The open-source code library for PHP

英語ですが、上記ページに同様の現象が報告されていて、それに対する回答としては、「今時の PHP は自前で json を持っているから、そっちを使え」みたいな回答になっています。

id:hopefully

いろいろ、検証および調査ありがとうございました。

こちらで問題なく完了しましたー。

2011/07/06 13:24:58
  • id:JULY
    ふと気になったのですが、CentOS 5.5 に PHP-5.3.6 という事は、ソースからビルドしてインストールしていますよね?

    で、

    --------------------------------------------------------------------
    Make sure that you run '/usr/bin/phpize' in the ......
    --------------------------------------------------------------------

    ということは、ソースからビルドしたものを /usr/local 下ではなく、/usr/bin などに配置するように configure してインストールしたのでしょうか?
  • id:hopefully
    そうですね。

    configureしてインストールしました。
    こちらが問題なんですかね?

  • id:JULY
    > こちらが問題なんですかね?

    いや、問題というわけじゃないんですが、/usr/bin 下に置くのは通常、パッケージからインストールしたもので、ソースからビルドすると、configure のデフォルトに任せて、/usr/local の下にインストールするのが一般的なので、「/usr/bin/phpize」となっているのを見たときに、「パッケージでインストールされているものと、ごちゃ混ぜになってないかな?」というのが心配になったのです。

    もっとも、原因は回答にあるように、「そもそも、新しい PHP ではダメっぽい」ということで、この件はシロだと思います。

この質問への反応(ブックマークコメント)

トラックバック

  • Facebookアプリ開発 Facebookアプリ情報 Facebook開発者 Home - Facebook開発者 PHP SDK facebook/php-sdk ? GitHub コピーサイトがあってそちらのZIPを落とす⬇ facebook/php-sdk at deprecated ? GitHub jsonモジュールが
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません