过去几天我一直在绞尽脑汁在 PHP 上安装 SSH2 连接。
我当前的设置是 VC11 非线程安全的,我已经在 PECL 网站上下载了相应的 zip 文件夹:http://windows.php.net/downloads/pecl/releases/ssh2/0.12/
文件名准确为:php_ssh2-0.12-5.5-nts-vc11-x86.zip,充分意识到版本的差异我在下载文件之前已经仔细检查了所有内容,PHP 如下:
编译器 MSVC11 (Visual C++ 2012)
架构 x86
PHP扩展构建 API20121212,NTS,VC11
因此,正确的文件已下载,我可以确认它们位于正确的目录(C:\PHP\ext)并且 PHP.ini 指向正确的文件夹。
现在,此压缩档案中包含
执照
php_ssh2.dll
php_ssh2.pbd
这些已放置在正确的文件夹中并且是现有的。扩展已正确输入到 php.ini 中,如下所示:
扩展=php_mbstring.dll
extension=php_exif.dll ; 必须在 mbstring 之后,因为它依赖于它
扩展=php_mysql.dll
扩展=php_mysqli.dll
;extension=php_oci8.dll ; 与 Oracle 10gR2 Instant Client 一起使用
;extension=php_oci8_11g.dll ;与 Oracle 11gR2 Instant Client 一起使用
扩展=php_openssl.dll
;扩展=php_pdo_firebird.dll
扩展=php_pdo_mysql.dll
扩展=php_ssh2.dll
但是在启动 Microsoft IIS 后出现问题,函数似乎未定义,因此我运行 C:\PHP\php.exe,它返回以下错误:
Warning: PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_ssh2.dll' - The specified module could not be found. in Unknown on line 0
但在显示此消息之前,我看到的是:
The program can't start because the libssh2.dll is missing from your computer. Try reinstalling the program to fix this problem
此 zip 文档中没有提供 libssh2.dll,这在该扩展的旧版本中很明显,我在 C:\WINDOWS\SYSTEM32 中有一个来自 5.4 文档的旧版本,并通过运行进行注册:
C:\>regsvr32 libssh2.dll
通过命令提示符。
尽管 stackoverflow 库中有许多关于此案例的问题/答案建议使用替代库,但我希望避免使用这些库并正确安装扩展。 有什么建议可以给出
答案1
回答得有点晚了。最近,我在使用 php 5.5 时遇到了这个问题。
解决方案
去http://www.libssh2.org/并下载 libssh2.dll 并放在 php 根目录中。
另一个选择是从这里并且 libssh2 应该包含在 zip 文件中。只需复制它,它应该与 php 5.4 和 5.5 兼容。但不确定为什么它没有包含在 php 5.5 中!