我写了一个PHP扩展,在linux下可以成功编译运行。但在Windows上,我遇到了一些问题。

我根据windows进行了编译 http://blog.slickedit.com/?p=128 PHP源码版本5.2.10,编译后生成dll文件。但是当我尝试使用该dll文件时,它报告我启动Apache(Wamp服务器)时出现内存问题。然后我开始调试过程,似乎REGISTER_INI_ENTRIES()有问题。

这是 PHP 扩展源代码, http://www.bluefly.cn/xsplit.tar.gz ,并且在 Linux 上运行良好。但我也想让它在 Windows 上运行。

抱歉,我不是专业人士,所以我希望有人可以帮助我。

感谢任何帮助,并提前致谢~

有帮助吗?

解决方案

你在Linux上没有看到问题的原因很可能是你在Windows上进行线程安全构建,而不是在Linux上。尝试在Linux上添加--enable-maintainer-zts,然后使用valgrind(USE_ZEND_ALLOC=0 valgrind /usr/bin/php script.php

进行检查

快速浏览一下代码,我发现你没有定义你的php_xsplit_init_globals哪些初始化的线程变量。必须通过添加

MINIT注册Tis功能
ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL);

呼叫。也许别的东西是错的,但这是我看到的第一件事。

其他提示

Wamp 使用 VC6 编译,它要求您的模块使用 VC6 编译。

报道 Romain Bourdon(WampServer 的作者)的话:因为 Apache 是用 VC6 编译的,所以如果您想将 PHP 作为模块运行(如在 WampServer 中),则必须使用 VC6 编译该模块。

如果您想使用更新的平台编译模块,则必须编译整个 PHP-CGI 发行版并将其作为(快速)CGI 运行。

如果您可以阅读法语(或者如果您知道如何使用翻译器),您可以阅读 这个帖子.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top