В чем разница между расширением и zend_extension в php.ini? - PullRequest
36 голосов
/ 18 ноября 2009

Когда я установил Xdebug через pecl, он добавил следующую строку в мой файл php.ini.

extension="xdebug.so"

и все, что я использовал, работало. До сегодняшнего дня.

Сегодня у меня возникли проблемы с настройкой Xdebug для интерактивной отладки. Я не мог заставить что-либо работать, пока я не изменил вышеупомянутое на

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

(Предостережение: я думаю именно это заставило меня работать, но я не уверен на 100%)

Это подняло вопрос в моей голове. Какая разница в загрузке расширения через extension= против zend_extension?

Ответы [ 2 ]

33 голосов
/ 09 октября 2013

Zend_extentions относятся к расширениям, встроенным в сам движок Zend. PHP, который встроен в сам движок Zend. Этот движок анализирует, интерпретирует и выполняет скрипт php. Если мы изменим движок, это изменит способ работы PHP.

Следующее сообщение опишет основное различие между расширением и zend_extension php

Оба типа расширений имеют много общего. Разница между обоими типами заключается главным образом в хуках, которые они регистрируют в Engine Помните, что, несмотря на то, что это очень редко, расширение может быть одновременно и расширением PHP, и расширением Zend. Xdebug - хороший пример.

Найти изображение ниже для основной схемы enter image description here

Более подробно см. По этой ссылке

19 голосов
/ 18 ноября 2009

В основе языка PHP (больше похожего на интерпретатор, потому что язык - это просто спецификация) лежит программное обеспечение (интерпретатор, компилятор байт-кода) под названием «Zend Engine», разработанное Zend.

Каждый модуль, который работает с этим ядром, должен быть установлен как «zend_extension».

И все же, чтобы решить вашу проблему, проигнорируйте эту попытку объяснения и обратитесь к документации по настраиваемому расширению - http://www.xdebug.org/docs/install.

...