问题标签 [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.

0 投票
3 回答
155 浏览

php - 开始编译 PHP 扩展

我有直接但密集的代码。我想把它编译成一个 PHP 扩展。最简单/最好的做法是什么?

我有 Java 背景,所以编写 C/C++ 代码应该不是问题。但是,我想避免在此过程中出现任何陷阱。

一个简单的教程或演练是我无法找到的。有很多例子,但没有什么是针对新手的。

它看起来比我更艰巨,尤其是所有可爱的C 怪癖

0 投票
1 回答
728 浏览

php - 跨多个请求的扩展中的 Zend 全局变量

正如标题所解释的,我想维护来自多个客户的请求的信息。让我举一个简单的例子来解释我想要什么。这个例子只是为了说明我的问题,而不是帖子的目的。

示例:我想计算到目前为止服务器从所有客户端收到的针对不同 php 脚本的请求总数。我的意思是来自多个不同客户端的多个不同页面的请求总数。我现在将有一个扩展来读取该全局计数并将其返回给 PHP 程序员。

Zend 提供的超级全局变量在来自同一客户端的多个请求中是持久的。有谁知道如何以及在哪里存储变量以及检索它的方式?

0 投票
1 回答
1641 浏览

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 扩展?或者,如果有人有经验可以正确快速地做到这一点,那肯定会非常有帮助。

0 投票
2 回答
311 浏览

php - Linux 的 PHP 扩展:需要现实检查!

好的,我已经编写了我的第一个功能性 PHP 扩展。它有效,但它只是一个概念验证。现在我正在写另一个真正做到老板想要的东西。

我想从你们所有的 PHP 专家那里知道,这段代码是否有意义。我是否已经很好地掌握了诸如此类的东西emalloc,或者那里有什么东西会在以后转身并试图咬掉我的手?

以下是其中一项功能的代码。它返回同样经过 Blowfish 加密的字符串的 base64。调用该函数时,会提供两个字符串,即要加密和编码的文本,以及用于加密阶段的密钥。它没有使用 PHP 自己的 base64 函数,因为此时我不知道如何链接到它们。出于同样的原因,它没有使用 PHP 自己的 mcrypt 函数。相反,它链接到 SSLeayBF_ecb_encrypt函数。

你会注意到我有两个emalloc电话, forEncoded和 for Buffer。OnlyEncoded被传回给调用者,所以我担心 Buffer 不会被释放。是这样吗?我应该使用 malloc/freeBuffer吗?

如果有任何其他明显的错误,我真的很感激知道。

0 投票
1 回答
16056 浏览

php - php的7z扩展?

我找不到,也不知道是否有任何PHP 压缩和存档扩展可以工作。

你认为我可以使用压缩流从 7z 文件中读取数据吗?

更新

  • 7z 论坛有很多关于 php 扩展的请求
0 投票
2 回答
559 浏览

php - 修改 php-imap 扩展以允许 oauth 身份验证

我的 php 应用程序通过 oauth 提供的访问密钥登录到 Gmail,并获取收件箱中所有邮件的标题。php-imap 扩展只允许基于登录名/密码的身份验证。我想修改扩展,使其也支持基于 oauth 的身份验证。我需要弄清楚如何在扩展代码本身内部进行更改并编译它。不好的部分,我不知道在哪里进行更改以及如何编译 php 扩展

早些时候,我使用 Zend 提供的 IMAP 类来完成这项任务。它们非常慢,如果超过 40-45 分钟左右,gmail 往往会断开连接。对于非常大的收件箱,这种情况经常发生。我使用 php-imap 扩展对其进行了测试,它的运行速度几乎是 zend 的 10 倍(我猜是因为它是用 C 编写的)

因此,我需要弄清楚当前 php-imap 代码中身份验证的发生方式和位置,以及在进行更改后如何重新编译它。

任何指针表示赞赏。

0 投票
1 回答
765 浏览

c++ - 我的 php 扩展中的分段错误

我写了一个 php 扩展,但找不到它报告分段错误的原因。相关代码:

以下来自 gdb

我发现问题出在 add_assoc_long 函数上,'tkey' 被声明为:

Segfault 仅在某些情况下发生,但并非总是如此,但我认为 tkey 不会有任何问题。任何帮助都非常感谢,非常感谢~

0 投票
4 回答
1361 浏览

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 启动错误?

0 投票
3 回答
1662 浏览

php - ionCube PHP 模块出错

我已将我的网站上传到共享主机上。我在我的网站中使用 ionCube PHP。网站的索引页面给出了这个错误:

" index.php 需要站点管理员安装 ionCube PHP Loader ioncube_loader_lin_5.2.so。"

我询问了服务器支持团队,说 ionCube 已安装在服务器上。

如果是这样,为什么会导致上述错误?

0 投票
5 回答
17266 浏览

php - 如何在 CentOS 5.3 上安装 php-mongo?

我已经在我的 VPS 上安装了 mongoDB。它运作良好。

现在我想安装 php 驱动程序以使 php 与 mongoDB 一起工作。

我关注了Mongo 安装,但找不到我需要的信息。本手册仅包含以下注意事项:

如果您使用的是 CentOS 或 Redhat,Csoke Arpad 为这些发行版 ( PHP Mongo ) 创建了 » RPM。

我不熟悉CentOS和发行版上的 ssh 命令(它是什么?)。谁能帮我安装这个 php 扩展?请提供安装它所需的所有 ssh 命令。

谢谢你。