我使用以下功能将文件从一台服务器复制到另一台服务器。它大部分时间都可以工作,但有时我会在日志文件中开始出现此错误:
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');
}
}
答案 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解决了这个问题。