質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

5813閲覧

PHPからsftpサーバにファイルを送信したいです。

UekiKouji

総合スコア121

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/03/20 06:22

編集2022/01/12 10:55

いつもお世話になります。
質問内容は、CentOS6のサーバからCSVのファイルをアップロードし、
別のCentOS6のsftpサーバに転送する方法です。
PHPのバージョンは5.6.30です。
sftpサーバは、以下のサイトを参考し構築しました。

https://www.server-world.info/query?os=CentOS_6&p=ssh&f=5

実際のファイルをアップするためのソースは、以下のようにしています。
一度ファイルをアップロードし、転送しようと考えています。ソース上は、転送処理は書いてません。認証処理まで作成しました。
//file_up.php

<html> <head> <meta charset="UTF-8" /> <title>file_upload_sample</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> ファイル:<br /> <input type="file" name="upfile" size="30" /><br /> <br /> <input type="submit" value="アップロード" /> </form> </body> </html>

//upload.php

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>sample</title> </head> <body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; $connection = ssh2_connect('10.10.10.10', 22); if (!ssh2_auth_password($connection, 'root', 'password')) { die('認証失敗'); } ssh2_scp_send($connection, 'files/' . $_FILES["upfile"]["name"], $_FILES["upfile"]["name"], 0644); echo "認証成功" . PHP_EOL; } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } ?></p> </body> </html>

ここで問題があります。sftpサーバには、sshやsftpコマンドでつなぐこができるのですが、!ssh2_auth_password($connection, 'root', 'password')の箇所でどうしてもrootで認証できず、認証に失敗して接続できません。

原因を考え以下のことを行いました。
sftpサーバがiptableやSELinuxが邪魔をしている
->①iptableやSELinuxを無効。

sftpサーバとかに何か設定がいるのでしょうか、どうかご教授をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/20 07:35

原因として考えた仮説が正しいかどうか、どうやって検証していますか?
UekiKouji

2017/03/20 09:04

iptableやSELinuxを無効にして、デバッグ実行して、sftpサーバ接続きるかどうか試しています。
shi_ue

2017/03/20 10:06

その別のCentOS6のサーバーは、普通にrootでsshは接続できるんですか?
UekiKouji

2017/03/20 11:28

rootでsshできます。
guest

回答1

0

やったことがないので当てずっぽうな回答になってしまいますがよろしいでしょうか。

PHPからSSHやSFTPを使うチュートリアル:phpspot開発日誌

このにある事例だと、公開鍵ファイルを用意して接続していますが、
今回質問者さんが試そうとしている環境ではパスワードのみで接続できる設定なんでしょうか?

投稿2017/03/20 07:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UekiKouji

2017/03/20 08:53

ご回答ありがとうございます。試そうとしているのは、パスワードのみでの接続です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問