いつもお世話になります。
質問内容は、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サーバとかに何か設定がいるのでしょうか、どうかご教授をお願いします。