Windows的PECL扩展

18

我在这里找到了一些相关的帖子,但是没有得到我的答案。所以我再次发布。
我该如何在Windows上安装PECL扩展?比方说我想在Windows XP上安装PECL oAuth扩展。
我知道两种方法,但是都不适用于我。

  1. 网站http://pecl4win.php.net/已经挂掉了好几个月了。所以我无法下载DLL。有没有其他地方可以下载DLL?

  2. 运行命令pecl install oauth-0.99.9.tgz会报错
    The DSP oauth.dsp does not exist.
    我尝试使用几个其他扩展,并且也出现了同样的错误。

我错过了什么?

6个回答

19

1
由于扩展的源代码很容易获取,所以与其直接提供特定的dll文件,不如发布一份详细指南,教大家如何从源代码构建一个pecl扩展dll文件。我找到了一些相关文章,但仍然不太清楚。 - Varun
3
http://wiki.php.net/internals/windows/stepbystepbuild 上有一些说明。正如我在这里对另一个答案评论所说:当前Windows上的构建系统不允许独立构建扩展,而是必须从PHP源代码树中构建。要添加oauth,您可以将源代码放在运行buildconf.bat之前的php-src / ext / oauth下,或者使用--extra-ext-dir(或类似)选项进行buildconf.bat。 - johannes
两年后对我之前评论的更新:与Unix类似,现在有一个名为“phpize”的工具可从二进制“开发”下载中获得。构建PECL扩展仍然不容易,因为许多开发人员没有在Windows上进行测试,这需要一些调整,特别是在使用第三方库时。 - johannes

3

2

目前,Windows版本的PECL处于一种奇怪的改革状态。原因是我认为他们正在尝试提供VS2008源代码版本。我建议您现在使用Zend Server,直到PHP组的Windows版本解决了所有问题。 Zend Server包括几乎所有可以在PECL中找到的扩展和其他内容,如果你很幸运,你可以自己编译。


那么我们可以说Zend这样做是有意为之,可能是为了未来的经济利益吗? - Pacerier
@Pacerier Zend并不拥有PHP,PHP使用Zend引擎。Windows PHP组是一个开源组织。话虽如此,Zend Server是Zend的企业解决方案,用于获得经济利益。这可能是为什么他们将最常见的模块添加到Windows版Zend Server中的原因。 - Kevin Peno

1

PECL安装程序会下载扩展的源代码,并尝试使用本地C编译器进行编译。问题在于整个过程是为Unix系统设计的,其中C编译器可用或可以轻松安装。在Windows下设置编译C代码的环境非常复杂。

理想的解决方案是获取已经编译好的DLL文件。这就是pcle4win网站的作用。然而,目前没有官方存储库可供下载PECL DLL,因此您只有两个选择:

如果有一个DLL存储库那就太棒了,但我不知道是否存在。


1

PHP源代码附带了一组针对Windows的配置脚本(使用Windows脚本宿主程序),这些脚本在php方面模仿了autoconf工具。如果您将扩展的代码放在/ext目录下的一个目录中(其中包括所有其他扩展,如bcmath、bzip等),则可以让buildconf脚本创建一个包含该(新)扩展的构建规则的makefile。
http://wiki.php.net/internals/windows/stepbystepbuild上有一个逐步指南,看起来简短而可行。


1
你说的是Unix而不是Windows。在Windows上构建独立扩展而不构建整个PHP是不可能的。 - johannes
是的,我说“创建一个包含构建规则的makefile”时有意保持模糊。那又怎样?首先构建核心,然后只构建您想要作为共享模块的扩展,确保配置参数与您使用的php包相匹配,然后使用.dll文件与您的“常规”php安装。这可能很简单,但也不是什么难事,对吧?mailparse扩展甚至不依赖于外部库。 - VolkerK


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接