PHP override_function 不使用APD?

问题描述 投票:0回答:2

我正在尝试使用 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;');
php gcc
2个回答
4
投票

另一种可能性是使用

runkit_function_redefine

请注意,runkit 的 PECL 版本 是 2006 年的,而 github 上有更新的版本。

另请参阅:重新定义内置 PHP 函数


0
投票

这对我有用:从 PECL 主页获取最新的 apd 源代码。使用提到的 patch、phpize、make、make test、make install 对其进行修补。并按照说明加载模块。

$ 文件 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
© www.soinside.com 2019 - 2024. All rights reserved.