问题标签 [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 用户空间?
我有一个 C++ 对象,Graph
它包含一个名为cat
type的属性Category
。我Graph
在用 C++ 编写的扩展中将对象暴露给 PHP。
只要Graph
's 方法返回 boolean 或 long 之类的原语,我就可以使用 ZendRETURN_*()
宏(例如RETURN_TRUE();
或RETURN_LONG(123);
。但是我怎样才能使
Graph->getCategory();
返回一个Category
供 PHP 代码操作的对象?
我正在关注http://devzone.zend.com/article/4486上的教程,这是我到目前为止的图形代码:
php - pgsql.so 未在 PHP 中加载
我的任务是创建一个访问现有 PostgreSQL 数据库的 PHP 应用程序。这是我第一次使用 Postgre,更不用说 PHP 已经安装在应该运行应用程序的 Linux 机器上。我没有设置这些东西的经验,我只是编码。
我的问题是我似乎无法让 Postgre 扩展在 PHP 中工作。我检查了 php.ini 文件,没有“extension=...”行。所以我添加了“extension=pgsql.so”。然后我检查了“extension_dir”,发现里面只有 2 个文件(ldap.so、phpcups.so),我添加了一个从另一个 Linux 机器上获取的 pgsql.so 文件。我重新启动了httpd。它不起作用。我在 phpinfo() 中找不到任何“pgsql”或“postgre”。
原谅我的菜鸟。我对Linux知之甚少。如果您能指出正确的方向,我将不胜感激。
我使用了 number5 给出的建议:
伙计,我在 RedHat 上。我使用了你给出的命令的“yum”版本,我得到了这个:
[root@perseus ~]# yum install php-pgsql 正在加载“installonlyn”插件 设置安装过程 设置存储库 无法检索镜像列表http://mirrorlist.centos.org/?release=5&arch=x86_64&repo=extras错误为 [Errno 4] IOError:错误:无法为 repo 找到有效的 baseurl:extras
不幸的是,我使用的 Linux 服务器没有连接到 Internet。还有其他安装方式吗?
php - 如何使用 Vala 编程语言制作 PHP 模块?
这种名为 Vala 的新语言据说类似于 C#,据说比 C++ 或 C 更容易,它在 Linux 上使用 GCC 编译器编译成 C。
听起来很棒。现在我想用它来制作一个 PHP 扩展模块,以便可以在 Vala 中制作慢速 PHP 代码并作为函数导入 PHP。
我如何在 Vala 中做到这一点?甚至可能吗?
php - 在 PHP 运行时重命名函数
在 PHP 5.3 中有一种方法可以重命名函数或“挂钩”函数。
自rename_function()
〜2004年以来,“APD”内部已被破坏。如果您尝试在 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 中!??!?!(要爱蟒蛇:)
php - 如何从 PHP 扩展返回 C++ 对象数组
我需要让我的 PHP 扩展返回一个对象数组,但我似乎无法弄清楚如何做到这一点。
我有一个Graph
用 C++ 编写的对象。Graph.getNodes()
返回一个std::map<int, Node*>
。这是我目前的代码:
然后
当我运行时,php -r '$g = new Graph(); $g->getNodes();'
我得到输出
XX]Segmentation fault
这意味着 getNodes() 函数成功循环通过我的 2 节点列表,返回,然后是段错误。我究竟做错了什么?
php - 使用 SWIG 创建 PHP C/C++ 扩展模块
我已经为 PHP 编写了一些 C/C++ 扩展模块,使用“老式方式”——即使用手动方式(如 Sarah Golemon 在她的书中所描述的)。
这对我来说太繁琐了,因为我很懒,想尽可能地自动化。此外,我现在已经使用 SWIG 生成 Python 扩展,并且我越来越喜欢使用它。
我正在考虑使用 SWIG 来生成我未来的 PHP 扩展。我在生产服务器上使用 PHP v5.2(及更高版本)。
我的问题是:
- SWIG PHP 接口是否稳定(即准备好投入生产)?
- 如果您对问题 1 的回答是肯定的 -您是否在您的生产现场使用它?
- 在使用 SWIG 创建 PHP 扩展模块时,我需要注意什么“陷阱”?
java - 用 java/c++ 扩展 php?
我只知道 php,我想知道您是否可以在需要时使用 c++ 或 java 扩展 php web 应用程序?我不想用 quercus 转换我的代码,因为这很容易出错。还有其他方法可以扩展它吗?
因为我读过的python可以用c++扩展它而不转换python代码并将java与jython一起使用?
php - 如何为 PHP 应用程序开发 C 扩展?
我的 PHP 应用程序有一个数字运算部分,这对 PHP 来说很慢,所以我正在考虑构建一个自定义 C 扩展,但是找不到任何好的参考开始:(
有没有关于如何做这样的事情的指南?
php - 使用 libtidy 的 PHP 扩展编译,但不加载
我用 C++ 编写了一个使用 libtidy 的扩展,当我编译 PHP 时它在 PHP 下完美运行--with-tidy
。
但是,让扩展在原生 PHP 上运行会很好。当我尝试使用扩展程序时,我得到如下信息:
并且未加载扩展程序。
显然,官方的 tidy 扩展工作正常。我在系统上安装了相关的libtidy开发包,它编译+链接没有问题。我试图查看整洁扩展的代码,但它是大量的宏 - 随意复制片段感觉就像货物代码。
除了使用 链接到库之外PHP_ADD_LIBRARY_WITH_PATH(tidy, $TIDY_LIBDIR, TIDY_SHARED_LIBADD)
,是否有修复此错误的 PHP 扩展或 C 语句?
提前致谢!!
编辑:这是整个 config.m4 文件:
sql-server - 调用未定义函数 mssql_connect()
我一直使用 PHP 5.2.3 版本,但现在我将 PHP 更新到 5.3.2 版本。
我的 MSSQL 有问题,我无法连接到 MSSQL 服务器。
我已经下载了 PHP 1.1 的 SQL 服务器驱动程序
文件很多,我用过php_sqlsrv_53_ts_vc9
。把它放在php/ext目录下php_sqlsrv_53_ts_vc9
。
我已经添加extension=php_sqlsrv_53_ts_vc9.dll
(在 php.ini 中),但它给出了一个错误:
在第 26 行调用 C:\webserver\www\MSSQl\db_mssql.class.php 中未定义的函数 mssql_connect()
我用过:
然后一切工作!