Мы изменили хостинговые компании и там, где ssh2 работал, он больше не работает. У нас включен ssh2
на новом сервере, а также включен allow_url_fopen
.SSH2 не работает на новом сервере
Единственное отличие, которое я вижу, это то, что старый сервер использовал PHP 5.4.45
, а новый сервер использует PHP 5.6.28
.
Однако теперь я получил следующую ошибку. Could not open remote file: ssh2.sftp://Resource id #337/my/directory/file.txt
Вот пример моего кода:
$remote_host = "myhostinfohere";
$remote_port = 22;
$remote_user = "myuser";
$remote_pass = "mypassword";
$remote_dir = "/my/directory/";
$remote_file = 'file.txt';
try {
$remote_conn = ssh2_connect($remote_host, $remote_port);
} catch (Exception $e) {
die("could not connect to ".$remote_host);
}
try {
ssh2_auth_password($remote_conn, $remote_user, $remote_pass);
} catch (Exception $e) {
die("Password failed on ".$remote_host);
}
$sftp = ssh2_sftp($remote_conn);
$fetch_string = "ssh2.sftp://$sftp" . $remote_dir . $remote_file;
//If I add this it says it doesn't exists for some reason even though I can see the file if I log in remotely.
$fileExists = file_exists($fetch_string);
if (!$fileExists) {
die('File does not exist');
}
$stream = fopen($fetch_string, 'r');
if (!$stream) {
die("Could not open remote file: " . $fetch_string . "\n");
}
Опять же, этот же код работает на старом сервере, но не на новом сервере. Что мне не хватает? Я могу легко скопировать файл на свой сервер с помощью ssh2_scp_recv()
, который отлично работает, поэтому я не уверен, что происходит с функцией fopen()
.
Можете ли вы вручную аутентифицировать использование одного и того же пользователя/прохода на новом сервере? does /my/directory/file.txt существует на новом сервере? Имеет ли он соответствующие разрешения? – ivanivan
Я могу выполнить аутентификацию вручную, и соединение действительно работает. Когда я говорю о новом сервере, я имею в виду, где находится скрипт, который используется для вызова другого сервера. Другой сервер, на котором находится файл, совсем не изменился. Просто сервер, на котором размещен вышеупомянутый скрипт. – MagentoMan
отключите брандмауэр и посмотрите эффект (сервер, на котором есть скрипт SSH). о, вы уже можете успешно подать запрос SSH ?. Если это так, это может быть проблема с разрешением файла, упомянутая @ivanivan. – webDev