web-dev-qa-db-ja.com

php.iniのExtensionとzend_extensionの違いは何ですか?

peclを介してXdebugをインストールすると、php.iniファイルに次の行が追加されました。

extension="xdebug.so"

そして私が使ったものはすべてうまくいった。今日まで。

今日、インタラクティブデバッグ用にXdebugを設定するのに問題がありました。上記をに変更するまで、何も機能しませんでした

zend_extension="/usr/local/lib/php/extensions/xdebug.so"

(警告:私考えるこれが私を働かせた理由ですが、100%確信はありません)

これは私の心に疑問を投げかけました。 extension=zend_extensionを介して拡張機能をロードする場合の違いは何ですか?

38
Alan Storm

PHP言語(言語は単なる仕様であるため、インタプリタに似ています)の中核となるのは、Zendによって開発された「ZendEngine」と呼ばれるソフトウェア(インタプリタ、バイトコードコンパイラ)です。

このコアを台無しにするすべてのモジュールは、「zend_extension」としてインストールする必要があります。

それでも、問題を解決するには、この説明の試みを無視し、構成している拡張機能のドキュメントを参照してください http://www.xdebug.org/docs/install

21
Milen A. Radev

Zend_extentionsは、Zendエンジン自体に組み込まれている拡張機能です。エンジンはPHPスクリプトを解析、解釈、実行します。エンジンを変更すると、PHPの動作方法が変わります。

含まれている図は、拡張機能とzend_extensionの主な違いを説明しています。

どちらのタイプの拡張機能も多くの機能を共有しています。両方のタイプの違いは、主にそれらがエンジンに登録するフックにあります。非常にまれですが、拡張機能はPHP拡張機能とZend拡張機能の両方にすることができます。Xdebugは良い例です。

メインスキーマについては、以下の画像をご覧ください Comparison of extensions and zend_extensions

詳細についてはこのリンクを参照してください

37
Praveen D