在WinXP Pro sp3上,为PHP 5.3.1安装php_ssh2.dll

4

我之前在另一台机器上安装了PHP 5.2.2(同样是WinXP Pro sp3),并从http://pecl4win.php.net/ext.php/php_ssh2.dll获取了SSH2扩展。

不幸的是,那个服务器现在似乎已经停用了("The pecl4win build box is temporarily out of service. We're preparing a new build system.")。旧的DLL与新的PHP不兼容,而我没有MS Visual Studio 6来编译它。

有人知道我可以在哪里获取适用于PHP 5.3.1的此文件吗?或者我应该回退到PHP 5.2.2?

我应该提到,我正在使用XAMPP 1.7.3,其中包含Apache 2.2。因此,我需要使用VC6编译的DLL。


1
我没有MS Visual Studio - visual c++ 2008表达版就足够了。请参见http://www.microsoft.com/express/download/。 - VolkerK
1
VolkerK:Visual C++ 2008能为Apache 2.2生成VC6 DLL吗? - NotoriousWebmaster
6个回答

5

谢谢JKS。当然,这么多个月后,我实际上已经离开了我需要这个的公司。我现在正在为Linux目标在OSX上进行开发。但是看起来这似乎可以工作。太糟糕了,在我进行搜索时它还没有可用。(从URL推测,它是在2011年2月上传的。) - NotoriousWebmaster

4
http://downloads.php.net/pierre/上有两个版本的lib_ssh2

  • php_ssh2-svn20091128-5.3-nts-vc9-x86.zip
  • php_ssh2-svn20091128-5.3-vc9-x86.zip

这些都是VC9版本,意味着它们不应与Apache.org上的二进制文件一起使用(我猜它们是为IIS准备的?请参见http://windows.php.net/左列关于VC6 vs VC9的内容)。你没有说明你使用的是哪个Web服务器,所以也许...


(我故意没有提供直接链接:那些可能很快过时,我不希望在SO上出现这种情况)


谢谢Pascal。我正在使用Apache 2.2。它是XAMPP的一部分(我现在注意到我没有在原贴中列出它,对此很抱歉)。我跟随您提供的链接 http://windows.php.net 并下载了两个DLL文件,以防万一。当我重新启动Apache时,我得到了以下报错信息:
PHP启动:ssh2:无法初始化模块 该模块是使用构建ID = API20090626,TS,VC9编译的 PHP是使用buildID = API20090626,TS,VC6编译的 这些选项必须匹配 <<<
哦!就差一点了!
- NotoriousWebmaster
由于使用不同版本的msvcrt(Microsoft Visual C++运行时),您可以使用vc9版本的php,尝试从官方页面下载最新版本。另外,一个php模块与apache没有任何关系,除了php apache SAPI。 - Felipe Buccioni

2

谢谢,Manoharan,看起来这可能解决了问题。当我在搜索时,它甚至是可用的。如果他们在其中提到VC6,我甚至可能会找到它。SEO:非常重要。 - NotoriousWebmaster
注意:此DLL似乎是为PHP 5.2 VC6的线程安全版本编译的,无法在非线程安全版本中使用。 - Spencer

2

2
感谢 @BradenAnderson,这对于其他寻找这个问题的人会很有用。 - NotoriousWebmaster

1

我曾经遇到过类似的问题,但是没有时间去编译所有的东西。然而,我找到了另一种解决方案,可以在远程ssh服务器上执行linux-bash脚本:Putty + Plink + PHP的exec()。

使用这些工具,可以通过PHP的exec、system或passthrough函数通过命令行打开putty的ssh连接。

当然,这并不像PHP的ssh函数那样优雅,但也许对某些人的问题有所帮助。


谢谢你的建议,Rudi。但这只是一个针对Windows的解决方案,而我正在Windows上开发,目标是Linux。不过,这是一个聪明的技巧。 - NotoriousWebmaster

0

请按照以下步骤进行:

  1. 提取php_ssh2.dll文件并粘贴到/ext文件夹中
  2. 在php.ini中添加以下条目

     extension=php_ssh2.dll;
    
  3. 重新启动Apache
  4. 检查php.ini是否有更改

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