PHP override_function без использования APD? - PullRequest
1 голос
/ 27 января 2011

Я пытаюсь использовать функцию override_function

http://php.net/manual/en/function.override-function.php из

http://pecl.php.net/package/apd, но APD не обновлялся с 2004 года и больше не устанавливается через PECL.

Я попытался скомпилировать его, используя патч, указанный в http://pecl.php.net/bugs/bug.php?id=16780&edit=2

Это было успешно, но я использую директиву компиляции

sudo /Applications/MAMP/bin/php5.3/bin/phpize CFLAGS='-O2 -arch i386 -arch ppc -g -Os' LDFLAGS='-O2 -arch i386 -arch ppc ' CXXFLAGS='-O2 -arch i386 -arch ppc -g -Os'

создает файл с 64-битной архитектурой

 /tmp/apd/apd-1.0.1: file modules/apd.so 
  modules/apd.so: Mach-O 64-bit bundle x86_64`

Я понятия не имею, почему он не работает - но это стало очень длинным обходом для функции, которую я мог бы просто переопределить другим способом.

  override_function('header', '$a', 'echo $a;');

Ответы [ 2 ]

3 голосов
/ 28 января 2011

Другая возможность заключается в использовании runkit_function_redefine.

. Обратите внимание, что версия PECL runkit выпущена в 2006 году, в то время как более новая версия github .

См. также: Переопределить встроенные функции PHP

0 голосов
/ 18 сентября 2011

Это сработало для меня: получите последнюю версию apd с домашней страницы PECL. Патч с упомянутым patch , phpize, make, make test, make install. И следуйте инструкциям для загрузки модуля.

$ file apd-1.0.1 / module / apd.so:

apd-1.0.1/modules/apd.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

php -v дает мне:

PHP 5.3.5-1ubuntu7.2 with Suhosin-Patch (cli) (built: May  2 2011 23:18:30) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
    with Advanced PHP Debugger (APD) v1.0.1, , by George Schlossnagle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...