3

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

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

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

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

任何帮助表示赞赏并提前感谢~

4

2 回答 2

2

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

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

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

如果您会阅读法语(或者如果您确实知道如何使用翻译器),您可以阅读这篇文章

于 2009-12-08T14:52:39.960 回答
2

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

通过快速浏览您的代码,我看到您没有定义您的php_xsplit_init_globals哪些初始化线程变量。Tis 函数必须MINIT通过添加一个

ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL);

称呼。也许还有其他问题,但这是我看到的第一件事。

于 2009-12-11T21:11:13.937 回答