Frage

Ich habe Probleme PHP SFTP-Upload-Dateien auf einen Remote-Server zu verwenden. Als ich cURL verwenden, erhalte ich die Fehler hier beschrieben:

SFTP von PHP - undefinierter Konstante CURLOPT_PROTOCOLS und CURLPROTO_SFTP

I phpseclib auch versucht, wie vorgeschlagen in:

SFTP aus PHP

Aber wenn ich phpseclib versuchen, erhalte ich diese Fehler:

Warning: require_once(Math/BigInteger.php) [function.require-once]: failed to open stream: No such file or directory in /home/john/public_html/test/Net/SSH2.php on line 53

Fatal error: require_once() [function.require]: Failed opening required 'Math/BigInteger.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/john/public_html/test/Net/SSH2.php on line 53

Ich habe dann versucht, mit Systembefehlen in php wie so, aber nichts geschah:

<?php
echo system('sftp user@ftp.domain.com');
echo system('password');
echo system('put file.csv');
?>

Ich habe auch versucht,

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

ssh2_scp_send($connection, '/local/filename', '/remote/filename', 0644);
?>

aber mein PHP-Server sagt ss2_connect nicht definiert ist.

Ich habe versucht, die folgenden von der Klemme

zu tun
scp file.csv user@ftp.remote.com
password

Aber der Server erlaubt keine scp Befehl. Ich habe keinen Shell-Zugriff SSH-Schlüssel zu erstellen.

Alles, was ich jetzt tun kann, ist, SFTP von Terminal und manuell hochladen. Aber ich möchte wirklich, dies zu automatisieren, um eine PHP-Website all dies tun können.

Es gibt nicht viele Anleitungen, wie SFTP-Upload von PHP. Ist es, weil es eine schlechte Sache zu tun ist? Wenn ja, was soll ich tun? Der Server möchte ich hochladen können nur SFTP-Verbindungen.

War es hilfreich?

Lösung

http://phpseclib.sourceforge.net/documentation/intro.html#intro_usage_correct

Per dass phpseclib Stammverzeichnis muss in include_path sein. Von dieser Seite:

<?php
  set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');

  include('Net/SFTP.php');
?>

Sie sollten wirklich machen Sie sich mit dieser Art von Technik umfassen -. Es ist ziemlich Standard für die PEAR-Bibliotheken und Zend diejenigen

Andere Tipps

  

aber mein PHP-Server sagt ss2_connect nicht definiert ist.

Für diesen Fehler sollten Sie ssh2 Erweiterung installieren auf Ihrem Server-PHP.

Verwenden Sie die in SSH-Bibliothek gebaut. die scp-Funktion wird einfacher als eine SFTP-Sitzung zu initiieren.

http://www.php.net/manual /en/function.ssh2-scp-send.php

Um die Verwendung system Befehl müssen Sie:

  1. Konfigurieren kennwort weniger ssh
  2. Ausführen-Befehl wie scp filename1 userid@hostname:filename2, Scheck man scp. Sie können das gleiche mit sftp tun, aber mit einigen anderen Optionen

Sie können Pure-PHP Implementierung von SSHv2 Bibliothek verwenden.

Hier sind einige Beispiele dafür, wie diese Bibliothek verwenden:

<?php
include 'vendor/autoload.php';
$ssh = new \phpseclib\Net\SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}
echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>

Und:

<?php
include 'vendor/autoload.php';
$key = new \phpseclib\Crypt\RSA();
//$key->setPassword('whatever');
$key->loadKey(file_get_contents('privatekey'));
$ssh = new \phpseclib\Net\SSH2('www.domain.tld');
if (!$ssh->login('username', $key)) {
    exit('Login Failed');
}
echo $ssh->read('username@username:~$');
$ssh->write("ls -la\n");
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top