模块'ssh2'已在第0行的Unknown中加载

时间:2011-01-18 15:52:10

标签: php ssh

我使用以下功能将文件从一台服务器复制到另一台服务器。它大部分时间都可以工作,但有时我会在日志文件中开始出现此错误:

Module 'ssh2' already loaded in Unknown on line 0

它会停止复制。稍后由于某种原因,错误将停止,复制将再次开始工作。这是什么问题?

function getConn($server,$username,$password)
{
    $connection = 0;

    if (function_exists("ssh2_connect")) 
    {
        $connection = ssh2_connect($server, 3817);
        if($connection)
        {
            if(ssh2_auth_password($connection, $username, $password))
            {
                return $connection;
            }
        }
    }
    return 0;
}
function scp($server,$username,$password,$remotepath,$localpath)
{
    $connection = 0;
    $connection = $this->getConn($server,$username,$password);
    if($connection)
    {
        $ret = ssh2_scp_send($connection, $localpath, $remotepath, 0644);
        ssh2_exec($connection, 'exit'); 
    }
}

3 个答案:

答案 0 :(得分:11)

错误消息Module 'ssh2' already loaded in Unknown on line 0表示PHP配置中存在某些问题。检查php.ini中是否有一行显示extension=ssh2.so。如果是这样,请将其删除并检查一切是否仍然有效。可能,extension = ssh2.so被加载两次,这意味着PHP会抱怨该模块已经加载。

祝你好运。

答案 1 :(得分:0)

就我而言,我在ssh2.ini位置注释了一行:/etc/php5/mods-available/ssh2.ini

此文件的内容现在如下:

;extension=ssh2.so

谢谢!

答案 2 :(得分:0)

如果上述方法不起作用,请查看/etc/php5/conf.d

如果您看到重复的ssh2.ini文件,请删除任何额外的文件。

在我的情况下,我有50-ssh2.ini和ss2.ini。两个文件都提供了这一行:

extension=ssh2.so

对我来说,删除50-ssh2.ini解决了这个问题。