问题标签 [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 投票
2 回答
2397 浏览

php - 使用 C++ 的 PHP 扩展

我最近开始研究编写 PHP 扩展,并通读了这篇文章,它描述了使用 C++ 构建扩展的起点。当我开始定制时,我遇到了一个麻烦,试图将一些功能拆分到一个单独的文件中。一切编译和链接都没有问题,但是当我尝试实际使用扩展时出现错误。确切的信息是:

我在两台电脑上试过,都遇到同样的问题。我知道它找不到 Container 构造函数的实际实现,但我不知道如何让它在正确的位置找到。

在发布到这里之前,我已经尝试尽可能多地去除绒毛,但是 php 接口代码中仍然存在很多杂乱无章的地方。代码如下:

配置.m4:

接口.h:

接口.cpp:

内部结构.h:

内部结构.cpp

我正在使用以下命令构建它:

谢谢你尽你所能的帮助

0 投票
2 回答
2185 浏览

php - PHP 扩展 - 从另一个 PHP 函数调用您自己的 PHP 函数

假设我们有一个自定义 PHP 扩展,例如:

如何从 RSHUTDOWN 处理程序调用 myfunction()?

0 投票
1 回答
622 浏览

php - 在 EasyPHP 文件夹中找不到 Zend 目录

我正在阅读有关在 C 中创建 php 扩展的教程。我正在使用 Visual Studio 2008 和 EasyPHP,其目录包括 /ext 文件夹(PHP 扩展目录)

这是教程: http: //www.devarticles.com/c/a/Cplusplus/Developing-Custom-PHP-Extensions-Part-1/2/

我在第 4 步遇到了问题:

Blockquote 4. 在预处理器类别中,添加以下“附加包含目录”:...., ....\main, ....\Zend, ....\TSRM, ....\bindlib_w32。

我在 easyphp forlder 中搜索了 main 、 zend 、 tsrm 和 bindlib_w32 目录,但找不到它们。

如果 EasyPHP 不包含 zend 目录。如何将其部署在正确的目录中?

并提前谢谢你

0 投票
1 回答
9076 浏览

php - 我在哪里下载 Windows 的 PHP 扩展?

我正在尝试使我的 PHP 安装与 PostgreSQL 一起使用,所以我需要 php_pgsql.dll

一个非常愚蠢的问题,但是我的 PHP5.3 在哪里可以得到一个?

我在这里读过:http: //php.net/manual/en/install.windows.extensions.php,但据说,是的,你需要这个 dll,但没有下载链接。我错过了什么?

默认情况下,我的安装中不存在 dll:

替代文字

0 投票
1 回答
765 浏览

php - PHP Zend 引擎扩展和静态方法

在为 php (5.3) 编写扩展时,我想访问zend_class_entry静态方法上的指针。

在非静态方法上,我可以像这样使用getThis()宏和宏内Z_OBJCE_P

现在的问题:在静态方法上,getThis()宏返回一个null指针,所以我不能使用Z_OBJCE_P宏。

有没有人为我提供zend_class_entry从静态方法访问的解决方案?

0 投票
1 回答
11237 浏览

php-extension - PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20060613/'

我在新的专用服务器中收到此错误日志。

PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20060613/'

在 php.ini 中

扩展 =

extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613

目录存在于服务器中,但我不明白为什么我会得到这个?

非常感谢

0 投票
1 回答
532 浏览

php - ArrayAccess 是如何工作的?

我一直在从 SPL 中阅读有关 PHP 常用接口的信息,例如IteratorCountableArrayAccess. 但是,我不完全了解它们是如何工作的。

他们的实现是否修改了 PHP 的核心功能,例如重载[]数组运算符?

我还阅读了有关运算符扩展的信息,它提供了以与低级语言相同的方式重载其他运算符的能力。由于 Operator 扩展明确修改了 PHP 核心,我想知道是否ArrayAccess在幕后以相同的方式进行操作?

我是一个修补匠,因此我发现在不知道引擎盖下的东西的情况下很难使用某些东西。

0 投票
6 回答
16295 浏览

php - 检测服务器上是否安装了 FreeType PHP 扩展

如何测试以查看是否在运行 PHP 的服务器上安装了 FreeType 扩展?

我想在我的网站上制作一个简单的验证码系统,所以我使用imagettftext()了它并且效果很好。但是如果服务器没有安装 FreeType 库怎么办?

那么有没有办法通过代码以某种方式检测 FreeType 库,如果它不存在,回退到类似的东西imagestring()

如果我不能使用imagettftext(),我可能不得不寻找替代方法来绘制大字体文本,因为imagestring最大尺寸不适合 CAPTCHA 之类的东西。

0 投票
1 回答
2512 浏览

php - 无法在 PHP 5.3.5 中加载自定义 PHP 扩展

我正在尝试在 Windows XP/IIS 5.1 开发机器上加载自定义 PHP 扩展,但我失败了。

我有...

  • 将 PHP 扩展 ( php_fortranwrapper.dll ) 放在我的 PHP 5.3.5 安装的“ext”子文件夹中
  • 一直在编辑正确的php.ini文件(即与 phpinfo() 输出中列出的“加载的配置文件”条目对应的文件)
  • extension_dirphp.ini中设置指向前面提到的“ext”子文件夹
  • 在php.ini中添加了一个extension=php_fortranwrapper.dll条目来加载 PHP 扩展
  • 重新启动 IIS(通过iisreset

在运行phpinfo()脚本时,它会尝试加载页面,直到 FastCGI 超时并出现以下错误: FastCGI 进程超出了配置的请求超时

如果我将 PHP 扩展名重命名为 php_fortranwrapper1.dll,我在逻辑上会看到以下错误:
PHP Startup: Unable to load dynamic library 'C:...\php-5.3.5\ext\php_fortranwrapper.dll' - The specified module找不到。

有关信息,我使用 PHP 5.3.5 和 PHP4Delphi 生成了 PHP 扩展,这是一个从 Delphi 源代码编译 PHP 扩展的工具。我的 Delphi 代码加载一个 Fortran DLL 并将一个整数传递给该 Fortran DLL 中的一个函数,并期望返回一个整数结果。

0 投票
2 回答
280 浏览

php - 如何制作/修补 php 源代码(c 代码)以从 php.ini 读取数组?

我有 php 经验,但我是 php 源代码和 php 扩展的新手。我想扩展 php 以便它从数组中随机选择一个 upload_tmp_dir,而不是一个固定的目录。

它看起来不像 php 并且 ini 文件读取代码具有解析 ini 文件中的数组的任何自然能力。

是否有任何现有代码或扩展(在树中或树外)允许将 ini 定义的数组映射到 php 中的全局数组 val?

否则我想我会引入像“num_upload_dirs”这样的ini val,然后是“upload_tmp_dir_1”和“upload_tmp_dir_2”等,然后明确检查所有的val。

或者自己将行解析和全局数组创建例程写入ini文件阅读器。两者都不是很吸引人。还有其他建议吗?