Итак … эта функция прекрасно работает в PHP7 … но мне нужно уменьшить сервер до 5.6 из-за некоторого другого кода, который не работает с PHP7.
Как только сервер масштабируется до 5.6, эта функция SSH2 выдает ошибку Failed to open directory.
Я проверил все функции, которые вызываются, и они все PHP 4.0 и выше. У кого-нибудь есть идеи?
function get_the_k12_file($filename)
{
$host = "thehost.com";
$port = 22;
$username = "username!";
$password = "password!";
$remoteDir = "/the/path/tothefile/";
$localDir = "";
if (!function_exists("ssh2_connect"))
die("Function ssh2_connect does not exist.");
if (!$connection = ssh2_connect($host, $port))
die("Failed to connect.");
if (!ssh2_auth_password($connection, $username, $password))
die("Failed to authenticate.");
if (!$sftp_conn = ssh2_sftp($connection))
die("Failed to create a sftp connection.");
if (!$dir = opendir("ssh2.sftp://$sftp_conn$remoteDir"))
die("Failed to open the directory.");
$files = array();
while ( ($file = readdir($dir)) !== false)
{
if(substr($file, -4)==".zip")
{
$files[]=$file;
}
}
closedir($dir);
foreach ($files as $file)
{
if($file==$filename)
{
echo "Copying file: $file\n";
if (!$remote = fopen("ssh2.sftp://$sftp_conn$remoteDir$file", "r"))
{
echo "Failed to open remote file: $file\n";
continue;
}
if (!$local = fopen($localDir . $file, "w"))
{
echo "Failed to create local file: $file\n";
continue;
}
$read = 0;
$filesize = filesize("ssh2.sftp://$sftp_conn/$remoteDir$file");while ( ($read < $filesize) && ($buffer = fread($remote, $filesize - $read)) )
{
$read += strlen($buffer);
if (fwrite($local, $buffer) === FALSE)
{
echo "Failed to write to local file: $file\n";
break;
}
}
}
fclose($local);
fclose($remote);
}
}
Задача ещё не решена.
Других решений пока нет …