PHPでSFTP接続を確立する方法とエラーの解決法


  1. phpseclib3\net\sftpライブラリのインストール: 最初に、phpseclib3\net\sftpライブラリをインストールする必要があります。これは、PHPでSFTP接続を管理するための非常に便利なライブラリです。インストール手順は次の通りです:

    composer require phpseclib/phpseclib
  2. SFTP接続の確立: SFTP接続を確立するには、以下の手順に従います。

    use phpseclib3\Net\SFTP;
    $sftp = new SFTP('ホスト名');
    if (!$sftp->login('ユーザー名', 'パスワード')) {
       exit('ログインに失敗しました');
    }

    上記のコードでは、ホスト名、ユーザー名、およびパスワードを適切な値で置き換える必要があります。

  3. ファイルのアップロード: SFTP接続が確立された後、ファイルをアップロードすることができます。以下は、ファイルをアップロードする例です。

    $localFile = '/ローカル/ファイル/パス';
    $remoteFile = '/リモート/ファイル/パス';
    if (!$sftp->put($remoteFile, $localFile, SFTP::SOURCE_LOCAL_FILE)) {
       exit('ファイルのアップロードに失敗しました');
    }

    上記の例では、ローカルファイルのパスとリモートファイルのパスを適切な値に置き換える必要があります。

  4. エラーの解決: SFTP接続時によく発生するエラーとその解決法をいくつか紹介します。

    • エラーメッセージ: "SSH2サポートが無効です" (SSH2 support is not enabled) 解決法: PHPでSSH2拡張が有効になっていることを確認してください。必要な場合は、php.iniファイルを編集し、"extension=ssh2"という行をアンコメントして有効にします。

    • エラーメッセージ: "ホストキーが見つかりません" (Host key not found) 解決法: 接続先のホストの公開鍵を信頼済みのホストキーとして登録してください。これには、loadHostKeys()メソッドを使用することができます。

このブログ投稿では、PHPを使用してSFTP接続を確立する手順と一般的なエラーの解決法を詳しく説明しました。これにより、SFTPを使用してファイルのアップロードやダウンロードなどの操作を行うことができるようになります。