I wrote a php script to execute locally, on an apache server with php7.3, doing the following:
script works without problems except for closing connection. if I add ssh2_disconnect function, no response comes back. What am I missing? Here is my code:
<?php
error_reporting(1);
ini_set('display_errors', '1');
$config = ["server"=>"10.1.201.1","port"=>"22","user"=>"root","password"=>"root","folder"=>"/"];
$files = ["file1.pdf","file2.pdf"];
$result = [];
$ftpConnect = ssh2_connect($config['server'],$config['port']);
ssh2_auth_password($ftpConnect,$config['user'],$config['password']);
$sftp = ssh2_sftp($ftpConnect);
foreach ($files as $file){
$fileExists = file_exists("ssh2.sftp://". intval($sftp) . $config['folder'] . $file);
if($fileExists){
$result[$file]= ["status"=>"Found"];
}else $result[$file]= ["status"=>"Not found"];
}
//ssh2_disconnect($ftpConnect); only if uncommented, script wouldn't work
header('content-type:text/json; charset=UTF-8');
echo json_encode($result);
?>
It seems to be version dependant. ssh2_disconnect
is the only function you use to be available with PECL ssh2 >= 1.0
all the other ssh2
functions are available for PECL ssh2 >= 0.9.0.
The following comment let us think php >= 7 is also needed.
http://php.net/manual/function.ssh2-disconnect.php#123413
Here is how he suggest to close the connexion without ssh2_disconnect
available :
$session = null; unset($session); // close connection