libssh2 — php sftp, использующий ssh2 портящий pdf файлы

Я пытаюсь перенести PDF-файл с нашего сервера на другой через SFTP. Я проверил файлы, и они по сути не повреждены. Я могу просмотреть их в командной строке на моем компьютере, и они открываются просто отлично. Заметка: Я могу успешно передать PDF-файл, он просто поврежден, как только он попадает на другой сервер.

Я пытался использовать два метода:

conn = ssh2_connect($url, 22);
$auth = ssh2_auth_password($conn, $userName, $password);

$sftp = ssh2_sftp($conn);
file_put_contents("ssh2.sftp://".$sftp.$remoteFilePath, $localFilePath);

Посмотрев на этот вопрос, я наткнулся на следующий вопрос и попробовал дать ответ:

ssh2_scp_send () используя php портит pdf

conn = ssh2_connect($url, 22);
$auth = ssh2_auth_password($conn, $userName, $password);

$sftp = ssh2_sftp($conn);
$fp = fopen("ssh2.sftp://".$sftp.$remoteFilePath, "w");
fwrite($fp, $localFilePath);
fclose($fp);

Это также передает файл, но также поврежден, поэтому я не могу открыть его в моем FTP GUI, когда он находится на их сервере.

Теперь я знаю о другом расширении php, которое делает это. Я попробую, если я не смогу заставить это работать, но я уделил этому достаточно времени, и это ДОЛЖНО сработать. Какие-нибудь мысли?

-1

Решение

смотреть на http://php.net/manual/en/function.ssh2-scp-send.php

и попробовать:

$conn = ssh2_connect($url, 22);
$auth = ssh2_auth_password($conn, $userName, $password);

ssh2_scp_send($conn, $localFilePath, $remoteFilePath, 0644);
0

Другие решения

Нашел ответ. У меня было $ localFilePath написано так:

$localFilePath = "/path/to/my/file.pdf";

file_put_contents () и fwrite () рассматривали переменную как строка. Таким образом, он создаст новый PDF-файл, содержимое которого будет представлять собой строку filepath. Я обнаружил это только после попытки передать небольшой файл .txt. ТАК, добавление это решило проблему:

$localFilePath = fopen("/path/to/my/file.pdf", "r");

Я чувствую, что странно, что я не видел, чтобы это использовалось в примерах, которые я видел, что sftp использует этот подход, но вы идете.

0

По вопросам рекламы [email protected]