質問: webサーバーにxhprofをインストールしてある環境のPHPを5.5から5.6にしたところ 下記のようなワーニングが表示されるようになりました。 ※xhprofはPHP5.5,5.6対応版を使用しています。 $ php -v PHP Warning: PHP Startup: xhprof: Unable to initialize module Module compiled with module API=20121212 PHP compiled with module API=20131226 それでxhprof.soのソースをコンパイルしなおし、ライブラリフォルダにコピーしたところ、このワーニングは表示されなくなりました。 そこで質問なのですが、 1これはxhprof.soにphpのライブラリモジュールが静的に組み込まれているということなのでしょうか? 通常、動的呼び出しであればコンパイルしなおす必要はないのではと思いますがいかがでしょうか? 2xhprof.soはPHPをバージョンアップするたびにコンパイルしなおさないといけないのでしょうか? 他のsoファイルはそのままなので、なぜxhprof.soだけなのか?と思いました。
回答: > > 1これはxhprof.soにphpのライブラリモジュールが静的に組み込まれているということなのでしょうか? > > > PHPと拡張のインターフェースは内部的なものなので、構造がバージョンごとに変化しえます。そのため、バージョンの違うPHPでコンパイルされたエクステンションは、エラーで弾くように設計されています(そのほうが無言でクラッシュするよりいいでしょうし)。 > > 2xhprof.soはPHPをバージョンアップするたびにコンパイルしなおさないといけないのでしょうか? > > > そのとおりです。「他のsoファイル」も、CentOSでPHP本体をアップデートすれば、そちらでアップデートが行われているはずです。