为wamp集成开发环境添加PHP扩展的步骤:
1、修改php.ini 添加:extension=**.dll 需要添加的扩展
2、将扩展的dll文件添加到 phpdir/ext目录下
3、重启wamp,查看PHP扩展是否添加成功。
上述三个步骤为理论上的三个步骤,网上的很多解决方案也都是如此。但是当我们进行配置扩展时,会发现完全不是那么回事,到处都是雷。
下面我先说一下我在安装php_ssh2扩展时遇到的问题(真的是一字一泪啊):
首先,按照上面的黄金三步走进行了配置(该改的改了,该添加的添加啦),但是当重新启动wamp时弹出了一个对话框:
1、php5.dll文件丢失
抱希望于某某度,发现真的是搜索结果很多,但是都是千篇一律啊,最主要是没有能够真正解决问题的结论。最后只能求助某某歌啦,有一篇英文文档里面说,如果php在编译动态连接库时需要操作系统提供对php5的支持(当然取决于你选择的版本),所以需要将php5.dll文件添加到操作系统中(Windows下:c://windows/system32下),非常高兴的解决了这个问题,又重新启动了一下wamp。结构发现竟然报出了这样的错误:
2、PHP Startup:ssh2:Unable to initialize module Module compiled with build Id = API20121212,NTS,VC11
PHP compiled with build ID=API20121212,TS,VC11
These options need to match
当时看到这个问题就晕菜啦,根本没看明白到底是怎么回事,上网上搜,貌似解释的也是云里雾里的。最后通过高人指点才明白怎么回事。
要解决这个问题需要了解几个内容:php扩展 build的方式和执行方式,那么就涉及到如下几个参数(printInfo()打印出来的):
PHP API
|
20121113
|
PHP Extension
|
20121212
|
Zend Extension
|
220121212
|
Zend Extension Build
|
API220121212,TS,VC11
|
PHP Extension Build
|
API20121212,TS,VC11
|
Debug Build
|
no
|
Thread Safety
|
enabled
|
在谈到PHP扩展应用时不得不提到这样几个参数(着实的踩到了雷啊!):
zend extension build :表示zend扩展构建时用到的编译环境
PHP extension build :表示PHP扩展加载时用到的编译环境
Thread Safety :表示执行时将进行线程安全检查,这个就是前面所说的 ts ,而 nts = none thread safe
所有的php扩展都将发布两个版本一个是 NTS (非线程安全)和 TS (线程安全的)所以在添加扩展时一定要查看一下自身php所对应的执行方式。
所以大家在做php扩展时一定要注意选择正确的发布版本。
阅读(4221) | 评论(1) | 转发(0) |