ПОТЯНИТЕ сгенерированные сбои кода для работы PHP 5.3.2 неопределенных символа: zend_error_noreturn

У меня есть библиотека, которой я пользовался успешно с PHP 5.1.6 с помощью некоторого кода обертки, сгенерированного БОЛЬШИМ ГЛОТКОМ (v1.3.40).

Я только что обновил до PHP 5.3.2, и я вижу следующую ошибку:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/myLib_php.so' - /usr/lib/php/modules/myLib_php.so: undefined symbol: zend_error_noreturn in Unknown on line 0 

На расследовании кажется, что код обертки, произведенный БОЛЬШИМ ГЛОТКОМ (myLib_wrap.c), включает вызовы в функцию PHP: zend_error_noreturn и что эта функция не доступна в PHP 5.3.2?

Кто-либо видел эту проблему прежде? Вещи, кажется, работают, если я вручную обновляю сгенерированный код так, чтобы вместо того, чтобы назвать zend_error_noreturn он просто назвал zend_error. Действительно ли этот подход безопасен?

6
задан hakre 18 April 2013 в 16:07
поделиться

1 ответ

В PHP недавно было изменение, которое определяло только символ zend_error_noreturn как псевдоним символа для zend_error при сборке с GCC версии 3 или выше, тогда как ранее он также определил символ при использовании GCC 2.

Псевдоним символа - это всего лишь попытка оптимизации в PHP, которая не дает никаких преимуществ, и он действительно должен был быть отброшен тем, кто недавно пересматривал эту часть движка. В других случаях сборки это просто # определяется как zend_error .

Замена вызовов zend_error_noreturn на zend_error безопасна.

6
ответ дан 17 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: