PHP upload dosya SFTP nasıl

4 Cevap php

Ben uzak bir sunucuya yükleme dosyalarını SFTP için PHP kullanırken sorun yaşıyorum. Ben cURL kullandığınızda, ben burada açıklanan hatayı alıyorum:

http://stackoverflow.com/questions/1766822/sftp-from-php-undefined-constant-curloptprotocols-and-curlprotosftp

Önerildiği gibi ben de phpseclib çalıştı:

http://stackoverflow.com/questions/717854/sftp-from-within-php

I phpseclib çalıştığınızda Ancak, ben bu hataları alıyorum:

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

Ben o zaman gibi php sistem komutları kullanarak çalıştı, ama hiçbir şey olmadı:

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

Ayrıca güvenilir

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

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

ama benim php sunucu ss2_connect tanımlı değil diyor.

Ben terminali aşağıdakileri yapmaya çalıştım

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

Ancak sunucu scp komutu izin vermez. Ben ssh anahtarlarını oluşturmak için kabuk erişimi yok.

Ben şu anda yapabileceğiniz her terminalden SFTP ve elle yüklemek. Ama gerçekten bu kadar bir PHP web sitesi tüm bu yapabileceğiniz bu otomatikleştirmek istiyorum.

PHP yükleme SFTP konusunda birçok dersler yoktur. Bunu yapmak için kötü bir şey için mi? Eğer öyleyse, ne yapıyor olmalıdır? Ben yüklemek istediğiniz sunucu yalnızca SFTP bağlantıları sağlar.

4 Cevap

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

O Per, phpseclib kök dizini include_path olması gerekir. Bu sayfadan:

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

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

Eğer gerçekten tekniği dahil bu tür kendinizi tanımak gerekir - bu PEAR kütüphaneleri ve Zend olanlar için oldukça standart.

ama benim php sunucu ss2_connect tanımlı değil diyor.

Bu hata için, sunucunuzun php ssh2 uzantısı yüklemeniz gerekir.

SSH kütüphanede inşa kullanın. Scp işlevini kullanarak da bir ftp sunucusu oturumu başlatarak daha kolay olacak.

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

system komutunu kullanmak için gerekenler:

  1. Parola-az ssh yapılandırma
  2. scp filename1 userid@hostname:filename2, çek gibi komutunu çalıştırın man scp. Sen sftp ama bazı diğer seçenekler ile aynı şeyi yapabilirsiniz