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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3402閲覧

Laravel5.2 のSFTP送信結果の取得方法について

shiina

総合スコア55

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2016/06/14 10:18

お世話になります。

###前提・実現したいこと

Laravel5.2でSFTP送信を行いたいのですが、成否結果を取得する方法がわからず、ご教示いただけませんでしょうか。

###発生している問題・エラーメッセージ

何らかの要因(リモートパスの指定が不正など)ファイルが送信できていない場合に、結果を補足したいのですが、検知できていません。

###該当のソースコード

  • Laravelのタスクスケジュールを使用しています。
  • 正しいパスを指定し通信も問題ない場合、下記ソースで成功しています。

下記サイトを参考にして実装しました。
http://qiita.com/zaburo/items/db0569fc87ce64490551
https://laravelcollective.com/docs/5.2/ssh

/app/Console/Commands/HogeFileSender.php

php

1function execute() { 2 $localPath = 対象ファイルのローカル絶対パス; 3 $remotePath =送信先の相対パス; 4 //ここでremote.phpのhoge設定を元に、ローカルからリモートにSFTPファイル送信実行 5 SSH::into ( 'hoge' )->put ( $localPath, $remotePath ); 6}

/config/app.php

php

1<?php 2 3return [ 4(略) 5 'aliases' => [ 6(略) 7 'SSH' => Collective\Remote\RemoteFacade::class, 8 ], 9 10];

/app/remote.php

php

1<?php 2 3return [ 4 5 'default' => 'hoge', 6 7 'connections' => [ 8 'hoge' => [ 9 'host' => env('LOG_SFTP_HOST'), 10 'username' => env('LOG_SFTP_USER'), 11 'password' => env('LOG_SFTP_PASSWD'), 12 'key' => '', 13 'keytext' => '', 14 'keyphrase' => '', 15 'agent' => '', 16 'timeout' => 10, 17 ], 18 ], 19 20 'groups' => [ 21 'web' => ['hoge'], 22 ], 23 24];

###試したこと

  • try〜catchで囲みましたが、Exception等発生しませんでした。
  • $result = SSH::into ( 'hoge' )->put(...)のように戻り値を取得してみましたが成功失敗に関わらず常にfalseになりました。

###補足情報(言語/FW/ツール等のバージョンなど)

  • Laravel Framework version 5.2.35
  • PHP 7.0.7 (cli) (built: May 25 2016 18:36:46)
  • nginx version: nginx/1.10.1
  • さくらVPS(CentOS release 6.8 (Final) )

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

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

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

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

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

guest

回答1

0

自己解決

自己レスです。

php

1$con = SSH::into ( 'hoge' ); 2$con->put ( $zipPath, $remotePath ); 3// 結果を返さないので、存在チェック。。。 4if($con->exists($remotePath)) { 5 //成功 6} else { 7 // 失敗 8}

のように存在チェックをかけることで解決しました。

投稿2016/06/17 05:40

shiina

総合スコア55

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問