2009-11-19 5 views
4

J'ai des problèmes pour utiliser PHP pour SFTP télécharger des fichiers sur un serveur distant. Quand je CURL, je suis en train de l'erreur décrite ici:Comment SFTP télécharger des fichiers à partir de PHP

SFTP from PHP - undefined constant CURLOPT_PROTOCOLS and CURLPROTO_SFTP?

J'ai aussi essayé phpseclib comme le suggère:

SFTP from within PHP

Mais quand j'essaie phpseclib, je reçois ces erreurs :

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 

Je puis essayé d'utiliser les commandes du système en php comme si, mais rien ne se passe:

<?php 
echo system('sftp [email protected]'); 
echo system('password'); 
echo system('put file.csv'); 
?> 

J'ai aussi essayé

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

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

mais mon serveur php dit ss2_connect n'est pas défini.

J'ai essayé de faire ce qui suit du terminal

scp file.csv [email protected] 
password 

Mais le serveur ne permet pas la commande scp. Je n'ai pas d'accès shell pour créer des clés ssh.

Tout ce que je peux faire maintenant est sftp à partir du terminal et télécharger manuellement. Mais je veux vraiment automatiser cela afin qu'un site web PHP puisse faire tout cela.

Il n'y a pas beaucoup de tutoriels sur la façon de télécharger SFTP à partir de PHP. Est-ce parce que c'est une mauvaise chose à faire? Si oui, que devrais-je faire? Le serveur que je veux télécharger ne permet que les connexions sftp.

Répondre

6

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

Par qui, le répertoire racine de phpseclib doit être dans votre include_path. A partir de cette page:

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

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

Vous devriez vraiment vous familiariser avec ce genre de technique comprennent - il est assez standard pour les bibliothèques PEAR et les Zend.

0

Utilisez la bibliothèque SSH intégrée. Utiliser la fonction scp sera plus facile que d'initier une session sftp aussi.

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

+0

Le serveur sur lequel je travaille indique que ssh2_connect() n'est pas défini. En outre, l'hôte distant auquel je me connecte ne m'a pas permis de scp file.csv [email protected] – John

+1

Ceci n'est probablement pas disponible par défaut. Vous avez besoin de l'extension PECL ssh2 avec libssh2. –

0

Pour utiliser la commande system vous devez:

  1. Configurer un mot de passe moins ssh
  2. commande Exécuter comme scp filename1 [email protected]:filename2, vérifiez man scp. Vous pouvez faire la même chose avec sftp mais avec d'autres options
1

mais mon serveur php dit que ss2_connect n'est pas défini.

Pour cette erreur, vous devez installer l'extension SSH2 sur php de votre serveur.

Questions connexes