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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

1694閲覧

PHPファイルでAWS S3サーバーへファイルのアップロードをしたい

entaro12345

総合スコア75

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2021/09/29 01:45

編集2021/09/29 05:25

前提・実現したいこと

LinuxサーバーからAWS S3サーバーへファイルをアップロードしたいです。
cronにてPHPファイル実行して定期的にアップロードしたいです。
WinSCPでの接続は問題ないことが確認できているので、
設定等の情報は問題ないと思ってます。
現時点では、S3Client生成時に落ちてしまってます。

もしかしたらSDKなりの何かしらが不足しているのかもしれないとも思ってます。

お力を貸してください。

2021.09.29 13:00追記
下記のエラーが出ておりました。
「ユーザーが sudoers 内にありません」

composerのインストールはroot権限で実行してないです。
※root権限だとwarningが出たので、避けてインストールをしました。

2021.09.29 14:25追記
root権限にてcomposerをインストールしたのですが、変わらずでした。

該当のソースコード

PHP

1<?php 2 use Aws\Credentials\CredentialProvider; 3 use Aws\S3\S3Client; 4 5 // S3情報 6 $user = 'ユーザー'; 7 $region = 'リージョン'; 8 $version = 'latest'; 9 10 // 認証情報 11 $access_key_id = 'アクセスキー'; 12 $access_key = 'シークレットキー'; 13 14 // バケット情報 15 $bucket = 'バケット名'; 16 17 // アップロードファイル情報 18 $file1 = 'new.csv'; 19 $file2 = 'old.csv'; 20 21 // ファイルをアップロードする 22 function uploadData() { 23 24 try { 25 echo "1"; 26 $client = new S3Client([ 27 'region' => $region, 28 'version' => $version, 29 'credentials' => [ 30 'key' => $access_key_id, 31 'secret' => $access_key, 32 ], 33 ]); 34 echo "2"; 35 } catch (Exception $e) { 36 echo $e->getMessage(); 37 } 38 39 // ファイルのアップロード 40 $res = $client->putObject([ 41 'Bucket' => $bucket, 42 'Key' => $file1, 43 'SourceFile' => $file2, 44 'ContentType' => mime_content_type($file2) 45 ]); 46 } 47 uploadData(); 48?>

試したこと

・composer require aws/aws-sdk-phpの再実行
・try-catchにて例外を拾おうと試みましたが、何も出ませんでした

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

■Linuxサーバー
PHP 7.3.9

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーが出たのならまずエラーメッセージを見てください。
cronで動かす前に手動で動かしてなにかメッセージが出てないですか?

パッと見でおかしそうなところは、SourceFileにはアップロードしたいファイルのパスを指定する必要があるのにファイル名しか指定していないところですかね。

投稿2021/09/29 02:07

yu_1985

総合スコア7588

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

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

entaro12345

2021/09/29 02:24

回答ありがとうございます。 下記のえらがー出ておりました。 「ユーザーが sudoers 内にありません」 もしご存知でしたらご教示いただきたいのですが、composerのインストールは root権限で実行しないとできないものでしょうか。 root権限だとwarningが出たので、避けてインストールをしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問