PHP override_function 不使用APD?

发布于 2024-10-14 22:54:37 字数 953 浏览 2 评论 0原文

我正在尝试使用 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'

的文件

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

正在创建一个具有 64 位架构 不知道为什么它不起作用 - 但这已经成为一个函数的超长绕道,我可能只能以其他方式覆盖。

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

I'm trying to use override_function

http://php.net/manual/en/function.override-function.php
from

http://pecl.php.net/package/apd
but APD hasn't been updated since 2004 and no longer installs via PECL.

I tried to compile it using the patch listed in
http://pecl.php.net/bugs/bug.php?id=16780&edit=2

It was successful but the compile directive I'm using

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'

is creating a file with 64 bit architecture

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

I've no idea why it's not working - but this has become a super long detour for a function I might just be able to override some other way.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

番薯 2024-10-21 22:54:37

另一种可能性是使用 runkit_function_redefine

请注意,runkit 的 PECL 版本 是从 2006 年开始的,而 github

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

Another possibility is using runkit_function_redefine.

Note, that the PECL version of runkit is from 2006, while there's a newer version on github.

See also: Redefine Built in PHP Functions

吐个泡泡 2024-10-21 22:54:37

这对我有用:从 PECL 主页获取最新的 apd 源代码。使用提到的 补丁 对其进行修补,phpize,make,进行测试,进行安装。并按照说明加载模块。

$ 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

This worked for me: Get the latest apd source from the PECL homepage. Patch it with the mentioned patch, phpize, make, make test, make install. And follow the instructions to load the module.

$ 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 gives me:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文