4

PHP を使用してファイルをリモート サーバーに SFTP アップロードするのに問題があります。cURL を使用すると、次のエラーが表示されます。

PHP からの SFTP - 未定義の定数 CURLOPT_PROTOCOLS と CURLPROTO_SFTP?

以下で提案されているように、phpseclibも試しました。

PHP 内からの SFTP

しかし、phpseclib を試すと、次のエラーが発生します。

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

次に、phpでシステムコマンドを使用してみましたが、何も起こりませんでした:

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

私も試しました

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

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

しかし、私のphpサーバーはss2_connectが定義されていないと言っています。

ターミナルから次のことをしようとしました

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

しかし、サーバーは scp コマンドを許可していません。ssh キーを作成するためのシェル アクセス権がありません。

今できることは、端末から sftp して手動でアップロードすることだけです。しかし、私は本当にこれを自動化して、PHP Web サイトでこれらすべてを実行できるようにしたいと考えています。

PHP から SFTP アップロードする方法に関するチュートリアルはあまりありません。やり方が悪いからですか?もしそうなら、私は何をすべきですか?アップロード先のサーバーは sftp 接続のみを許可します。

4

5 に答える 5

6

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

そのため、phpseclib のルート ディレクトリは include_path にある必要があります。そのページから:

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

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

この種のインクルード手法に慣れておく必要があります。これは、PEAR ライブラリと Zend ライブラリではかなり標準的なものです。

于 2009-11-23T03:39:03.720 に答える
1

しかし、私のphpサーバーはss2_connectが定義されていないと言っています。

このエラーについては、サーバーの php に ssh2 拡張機能をインストールする必要があります。

于 2012-02-21T09:29:56.493 に答える
0

組み込みの SSH ライブラリを使用します。scp 関数を使用すると、sftp セッションを開始するよりも簡単になります。

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

于 2009-11-19T22:52:37.350 に答える
0

systemコマンドを使用するには、次のことを行う必要があります。

  1. パスワードなしの ssh を構成する
  2. scp filename1 userid@hostname:filename2、 checkのようなコマンドを実行しますman scp。同じことができますが、sftp他のいくつかのオプションを使用できます
于 2009-11-19T22:53:21.417 に答える