问题标签 [php-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 开始编译 PHP 扩展
我有直接但密集的代码。我想把它编译成一个 PHP 扩展。最简单/最好的做法是什么?
我有 Java 背景,所以编写 C/C++ 代码应该不是问题。但是,我想避免在此过程中出现任何陷阱。
一个简单的教程或演练是我无法找到的。有很多例子,但没有什么是针对新手的。
它看起来比我更艰巨,尤其是所有可爱的C 怪癖。
php - 跨多个请求的扩展中的 Zend 全局变量
正如标题所解释的,我想维护来自多个客户的请求的信息。让我举一个简单的例子来解释我想要什么。这个例子只是为了说明我的问题,而不是帖子的目的。
示例:我想计算到目前为止服务器从所有客户端收到的针对不同 php 脚本的请求总数。我的意思是来自多个不同客户端的多个不同页面的请求总数。我现在将有一个扩展来读取该全局计数并将其返回给 PHP 程序员。
Zend 提供的超级全局变量在来自同一客户端的多个请求中是持久的。有谁知道如何以及在哪里存储变量以及检索它的方式?
php - 有没有人在 windows x64 上为 php 5.2.x 编译了 rabbitmq/amqp 库
我正在尝试从我的 windows X64 开发机器上的 php (5.2.x) 脚本向 RabbitMQ 发布消息。
问题是我没有找到任何 php 的 dll 扩展。我的同事实际上正在尝试构建它(参见如何使用 cygwin/mingw 在 Windows 上编译 PHP 扩展?),但没有成功:(。
有谁知道我在哪里可以找到适用于 php (5.2.x) 的有效/工作 RabbitMQ dll 扩展?或者,如果有人有经验可以正确快速地做到这一点,那肯定会非常有帮助。
php - Linux 的 PHP 扩展:需要现实检查!
好的,我已经编写了我的第一个功能性 PHP 扩展。它有效,但它只是一个概念验证。现在我正在写另一个真正做到老板想要的东西。
我想从你们所有的 PHP 专家那里知道,这段代码是否有意义。我是否已经很好地掌握了诸如此类的东西emalloc
,或者那里有什么东西会在以后转身并试图咬掉我的手?
以下是其中一项功能的代码。它返回同样经过 Blowfish 加密的字符串的 base64。调用该函数时,会提供两个字符串,即要加密和编码的文本,以及用于加密阶段的密钥。它没有使用 PHP 自己的 base64 函数,因为此时我不知道如何链接到它们。出于同样的原因,它没有使用 PHP 自己的 mcrypt 函数。相反,它链接到 SSLeayBF_ecb_encrypt
函数。
你会注意到我有两个emalloc
电话, forEncoded
和 for Buffer
。OnlyEncoded
被传回给调用者,所以我担心 Buffer 不会被释放。是这样吗?我应该使用 malloc/freeBuffer
吗?
如果有任何其他明显的错误,我真的很感激知道。
php - 修改 php-imap 扩展以允许 oauth 身份验证
我的 php 应用程序通过 oauth 提供的访问密钥登录到 Gmail,并获取收件箱中所有邮件的标题。php-imap 扩展只允许基于登录名/密码的身份验证。我想修改扩展,使其也支持基于 oauth 的身份验证。我需要弄清楚如何在扩展代码本身内部进行更改并编译它。不好的部分,我不知道在哪里进行更改以及如何编译 php 扩展
早些时候,我使用 Zend 提供的 IMAP 类来完成这项任务。它们非常慢,如果超过 40-45 分钟左右,gmail 往往会断开连接。对于非常大的收件箱,这种情况经常发生。我使用 php-imap 扩展对其进行了测试,它的运行速度几乎是 zend 的 10 倍(我猜是因为它是用 C 编写的)
因此,我需要弄清楚当前 php-imap 代码中身份验证的发生方式和位置,以及在进行更改后如何重新编译它。
任何指针表示赞赏。
c++ - 我的 php 扩展中的分段错误
我写了一个 php 扩展,但找不到它报告分段错误的原因。相关代码:
以下来自 gdb
我发现问题出在 add_assoc_long 函数上,'tkey' 被声明为:
Segfault 仅在某些情况下发生,但并非总是如此,但我认为 tkey 不会有任何问题。任何帮助都非常感谢,非常感谢~
php - 在 Windows 上使用正确的 API 版本编译 PHP 扩展
经过无数的麻烦,我终于在 Windows 上创建了一个非常简单的“Hello World”风格的 PHP 扩展 dll。但是,虽然我已经成功创建了一个 DLL,并将其放在扩展文件夹中,并告诉了 php.ini,但现在我得到了这个:
PHP 警告:PHP 启动:\x81\xc2\xc0\x03L&\xc0\x03: 无法初始化模块\n使用模块 API=16777522 编译的模块\n使用模块 API=20090626 编译的 PHP\n这些选项需要在“未知”上匹配\n第 0 行
警告:PHP 启动:“L&”:无法初始化模块 使用模块 API=16777522 编译的模块 使用模块 API=20090626 编译的 PHP 这些选项需要在第0行的未知中匹配
似乎我的 PHP_API_VERSION 是 20090626,但由于某种原因,我的 DLL 认为它的 PHP_API_VERSION 是 16777522。
下面的教程对编译扩展 dll 有一些帮助: http ://www.talkphp.com/vbarticles.php?do=article&articleid=49&title=creating-custom-php-extensions
自己编写后,我可以访问相关 php 扩展的所有源代码 - 但是,我在哪里控制最终在 DLL 中的 PHP_API_VERSION?
我正在使用 Borland C++ Builder v5.5 成功编译 dll,而不是 Visual Studio。
这是完整的来源,以防万一:
我可以更改什么来消除 API 必须匹配的 PHP 启动错误?
php - ionCube PHP 模块出错
我已将我的网站上传到共享主机上。我在我的网站中使用 ionCube PHP。网站的索引页面给出了这个错误:
" index.php 需要站点管理员安装 ionCube PHP Loader ioncube_loader_lin_5.2.so。"
我询问了服务器支持团队,说 ionCube 已安装在服务器上。
如果是这样,为什么会导致上述错误?