在PHP 5.3中,有一种重命名函数或“挂钩”函数的方法。
自2004年以来,“APD”中的rename_function()
已被破坏。如果您尝试在PHP 5.3上构建它,您将收到此错误:
'struct _zend_compiler_globals' has no member named 'extended_info'
这是一个非常容易修复的错误,只需更改此行:
GC(extended_info) = 1;
到
CG(compiler_options) |= ZEND_COMPILE_EXTENDED_INFO;
我修改了我的php.ini,APD显示在我的phpinfo()中。但是,当我调用rename_function()
时,PHP页面无法加载,我的/var/log/apache2/error.log
中出现了分段错误。
无论如何修复APD以使用现代版本的PHP?或者是否有另一种重命名函数的方法? 为什么地球上的重要特征不在于PHP!??!?!(得爱蟒蛇:):
答案 0 :(得分:2)
Runkit trunk与5.3+兼容。
svn checkout http://svn.php.net/repository/pecl/runkit/trunk runkit cd runkit phpize ./configure make && make install
将extension = runkit.so添加到php.ini(或conf.d中的runkit.ini)
为了使用runkit_function_rename()
,您还必须使用--enable-maintainer-zts
配置标志重新编译php。 (该死的你好!)
答案 1 :(得分:2)
我意识到这个问题有点陈旧,但我最近正在寻找一种方法来重命名测试功能,并遇到与APD类似的困难。
最后点击了正确的Google查询并找到了另一个选项:Sebastian Bergmann的test_helpers extension - 它有自己的rename_function()
似乎工作正常,以及其他一些方便帮助拦截和嘲笑事物。
奖金 - 一个相对无痛的安装过程:
$ pear channel-discover pear.phpunit.de
$ pecl install phpunit/test_helpers
然后将extension=test_helpers.so
添加到您的php.ini
答案 2 :(得分:2)
可以在http://github.com/zenovich/runkit上找到最新的runkit扩展 它支持暂时发布的所有当代PHP版本(从4.4到5.4+)。这个runkit是官方的并且受到支持。
此致 德米特里·泽诺维奇