0 レビュー
242 回答
アマゾンウェブサービス-awsバケットにアップロードするphpスクリプトが機能しない
私のawss3が機能していません。誰かが助けを借りて来ることができますか?または、画像をアップロードする別のサーバーですか?現在、herokuで自分のサイトをホストしていますが、ファイルを直接アップロードできないため、dynoがデプロイされるたびに、ファイルが削除されます。それはオフトピックです。
私は本当にaws3を動作させることができません、私は今4-5時間試していますが、何もしていません。私は彼らの例で試しました
https://devcenter.heroku.com/articles/s3-upload-php ですが、このエラーが発生します(多くの場合、プレースホルダーを実際のキーに置き換えました)
コード
<?php
require 'vendor/autoload.php';
// this will simply read AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY from env vars
$s3 = new Aws\S3\S3Client([
'version' => 'latest',
'region' => 'eu-west-3',
'credentials' => [
'key' => $acceskey,
'secret' => $secret,
],
'debug' => true
]);
$bucket = 'heroevent';
?>
<html>
<head><meta charset="UTF-8"></head>
<body>
<h1>S3 upload example</h1>
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['userfile']) && $_FILES['userfile']['error'] == UPLOAD_ERR_OK && is_uploaded_file($_FILES['userfile']['tmp_name'])) {
// FIXME: you should add more of your own validation here, e.g. using ext/fileinfo
try {
// FIXME: you should not use 'name' for the upload, since that's the original filename from the user's computer - generate a random filename that you then store in your database, or similar
$upload = $s3->upload($bucket, $_FILES['userfile']['name'], fopen($_FILES['userfile']['tmp_name'], 'rb'), 'public-read');
?>
<p>Upload <a href="<?=htmlspecialchars($upload->get('ObjectURL'))?>">successful</a> :)</p>
<?php } catch(Exception $e) { ?>
<p>Upload error :(</p>
<?php } } ?>
<h2>Upload a file</h2>
<form enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF']?>" method="POST">
<input name="userfile" type="file"><input type="submit" value="Upload">
</form>
</body>
</html>
スクリプトの最初からs3クライアント/オブジェクトは正常に作成されましたが、関数を使用できないようです(たくさん試しました)
デバッグ時にこのテキストの塊が表示されます
-> Entering step init, name 'idempotency_auto_fill'
ここで何かを見つけました: AWS PHP SDK [S3] を使用してphpページに印刷しますが、うまくいかないようです。少なくとも、使用方法がわかりません。
ここにコード2
{-code-3}
presigned version(2)は、 {-code-4} に移動するまで機能します。その後、デバッグからテキストのチャンクが表示されます。
{-code-5}
編集
上記のすべては、ローカルホストでの作業によるものです。 herokuでは、最初の例では、ページが読み込まれません。 {-code-6}
に通知します
2022-04-27
わからない
0
レビュー
答え : -コマンドがarray(3)に設定されました{["instance"] => string(32) "000000005dbec716000000005d9ee9eb" ["name"] =>
string(9) "PutObject" ["params"] => array(6){["Bucket"] => string(9) "heroevent" ["Key"] =>
string(7) "EX6.PNG" ["Body"] => object(GuzzleHttp \ Psr7 \ Stream)#33(7){
["stream": "GuzzleHttp \ Psr7 \ Stream":private] =>タイプ(ストリーム)のresource(151)
["size": "GuzzleHttp \ Psr7 \ Stream":private] => int(48757)
["seekable": "GuzzleHttp \ Psr7 \ Stream":private] => bool(true)
["読み取り可能": "GuzzleHttp \ Psr7 \ Stream":private] => bool(true)
["writable": "GuzzleHttp \ Psr7 \ Stream":private] => bool(false)
["uri": "GuzzleHttp \ Psr7 \ Stream":private] => string(27) "C:\ Windows \ Temp \ php236D.tmp"
["customMetadata": "GuzzleHttp \ Psr7 \ Stream":private] => array(0){}} ["ACL"] => string(11) "public-
read "[" @http "] => array(1){[" debug "] =>タイプ(ストリーム)のresource(163)} [" @context "] => array(0)
{}}}リクエストがarray(0)に設定されました{}-> step initに入る、名前's3.ssec'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -------変更なし->stepinitに入る、名前's3.source_file'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------変更なし->stepinitに入り、「s3.save_as」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし->stepinitに入り、「s3.location」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし->stepinitに入る、名前's3.auto_encode'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし->stepinitに入る、名前's3.head_object'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし->ステップvalidateに入り、「validation」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし->ステップvalidateに入る、名前'input_validation_middleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -変更なし->ステップビルド、名前の入力
'ビルダー'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------request.instanceはに設定されました
000000005dbec7eb000000005d9ee9eb request.methodがPUTに設定されましたrequest.headersがarray(3)に設定されました
{["X-Amz-Security-Token"] => string(7) "[TOKEN]" ["Host"] => array(1){[0] => string(26) "s3.eu-
west-3.amazonaws.com "} [" x-amz-acl "] => array(1){[0] => string(11)" public-read "}} ||| <?php
'vendor /autoload.php';が必要です。
//これは単にenvvarsからAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYを読み取ります
{$ s3 = new Aws \ S3 \ S3Client([
'バージョン'=>'最新'、
'region' =>'eu-west-3'、
'クレデンシャル'=>[
'key' => $ acceskey、
'シークレット'=>$ secret、
]、
'デバッグ'=>true
]);
エコー「マージ」;
}
catch(Exception $ e){echo $ e-> getMessage();}
$bucket='ヒーローイベント';
試す{
$ cmd = $ s3-> getCommand('ListBuckets'、[
'バケット'=>'ヒーローイベント']);
$ request = $ s3-> createPresignedRequest($ cmd、'+20分');
//実際のpresigned-urlを取得します。このURLを使用すると、AWSにリクエストを送信でき、有効になります。AWSにすべてのS3バケットをリストするようにリクエストします。
$ presignedUrl =(文字列)$ request-> getUri();
echo "100%MERGE"。$presignedUrl。 "
";}
catch(Exception $ w){echo $ w-> getMessage();}
$ result = file_get_contents($ presignedUrl);
echo($ result);
エコー"
";
?>
<本体>
S3アップロードの例
<?php
if($ _ SERVER ['REQUEST_METHOD'] =='POST' && isset($ _ FILES ['userfile'])&& $ _FILES ['userfile'] ['error'] == UPLOAD_ERR_OK && is_uploaded_file($ _ FILES ['userfile' ] ['tmp_name'])){
試す {
$ upload = $ s3-> upload($ request、 '12314512415.jpg'、fopen($ _ FILES ['userfile'] ['tmp_name']、'rb')、'public-read');
?>
アップロードget('ObjectURL'))?>">成功:)
<?php} catch(Exception $ e){?>
アップロードエラー:(
<?php}}?>
ファイルをアップロード
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------
-----コマンドがarray(3)に設定されました{["instance"] => string(32) "0000000009fee825000000000b1d4d32"
["name"] => string(11) "ListBuckets" ["params"] => array(3){["Bucket"] => string(9) "heroevent"
["@http"] => array(1){["debug"] =>タイプ(ストリーム)のresource(160)} ["@context"] => array(0){}}
}リクエストはarray(0)に設定されました{}->ステップ初期化を入力します。名前は「s3.ssec」です。
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -------変更なし->stepinitに入り、「s3.source_file」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし->stepinitに入り、「s3.save_as」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -
---------変更なし->stepinitに入り、「s3.location」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -----
------変更なし->stepinitに入る、名前's3.auto_encode'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -----
---------変更なし->stepinitに入る、名前's3.head_object'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --変更なし->ステップvalidateに入り、「validation」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし->ステップvalidateに入る、名前'input_validation_middleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし->ステップビルド、名前の入力
'ビルダー'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------request.instanceはに設定されました
0000000009fee8b9000000000b1d4d32request.methodがGETrequest.headersに設定されましたarray(2)に設定されました
{["X-Amz-Security-Token"] => string(7) "[TOKEN]" ["Host"] => array(1){[0] => string(26) "s3.eu-
west-3.amazonaws.com"}}request.schemeがhttpsに設定されましたrequest.pathが/に設定されました->Entering
ステップビルド、名前'ApiCallMonitoringMiddleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -
-------変更なし->ステップビルドに入る、名前''
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -
request.instanceが0000000009fee8b9000000000b1d4d32から0000000009fee8c0000000000b1d4d32に変更されました
request.headers.X-Amz-User-Agentがarray(1){[0] => string(19) "aws-sdk-php/3.209.4"}に設定されました
request.headers.User-Agentがarray(1){[0] => string(53) "aws-sdk-php / 3.209.4 OS/Windowsに設定されました
NT / 6.2 lang / php / 8.0.12 "}->ステップビルドに入る、名前'endpoint_parameter'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------変更なし->ステップビルドに入り、「EndpointDiscoveryMiddleware」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------変更なし->ステップビルド、名前の入力
's3.checksum'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -変更なし->ステップビルド、名前の入力
's3.content_type'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------変更なし->ステップに入る
ビルド、名前's3.endpoint_middleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---
request.instanceが0000000009fee8c0000000000b1d4d32から0000000009fee8c7000000000b1d4d32に変更されました
request.headers.Host.0がs3.eu-west-3.amazonaws.comからheroevent.s3.eu-west-に変更されました
3.amazonaws.com->ステップビルドに入り、「s3.bucket_endpoint_arn」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---変更なし->ステップ記号を入力し、「StreamRequestPayloadMiddleware」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし->ステップ記号を入力、
名前'invocation-id'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---request.instanceがから変更されました
0000000009fee8c7000000000b1d4d32〜0000000009fee8bd000000000b1d4d32 request.headers.aws-sdk-
invocation-idがarray(1){[0] => string(32)"141cc43dc9928ffcf409543e0eb27252"}->に設定されました
ステップ記号を入力して、「再試行」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -----request.instanceがから変更されました
0000000009fee8bd000000000b1d4d32から0000000009fee8cf000000000b1d4d32request.headers.aws-sdk-retry
array(1)に設定されました{[0] => string(3) "0/0"}->ステップ記号を入力し、名前's3.put_object_url'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -------変更なし->ステップ記号、名前の入力
's3.permanent_redirect'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -変更なし->入力
ステップ試行、名前'ApiCallAttemptMonitoringMiddleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------変更なし<-ステップの試行を終了し、名前
'ApiCallAttemptMonitoringMiddleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -
-----結果はarray(2){["instance"] => string(32)"0000000009fee8cb000000000b1d4d32"に設定されました
["data"] => array(0){}}包括的ステップ時間:0.00046706199645996 <-ステップ記号、名前を残す
's3.permanent_redirect'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし
ステップ時間:0.00051307678222656 <-ステップ記号を残して、名前's3.put_object_url'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------変更なし包括的ステップ時間:0.00056099891662598<-ステップを終了
サイン、名前'再試行'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ----変更なし包括的ステップ時間:
0.0006101131439209 <-ステップ記号を残して、名前'invocation-id'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------
------ result.data。@metadataはarray(1){["transferStats"] => array(1){["http"]=>に設定されました
array(1){[0] => array(0){}}}}包括的ステップ時間:0.00069689750671387 <-ステップ記号を残して、
名前'StreamRequestPayloadMiddleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---------
変更なし包括的ステップ時間:0.00086617469787598 <-ステップビルドを終了、名前
's3.bucket_endpoint_arn'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -変更なし
ステップ時間:0.00090312957763672 <-ステップビルドを終了し、「s3.endpointミドルウェア」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------変更なし包括的ステップ時間:0.00094985961914062 <-
ステップビルドを終了し、「s3.content_type」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : - - - いいえ
変更包括的ステップ時間:0.0010161399841309 <-ステップビルドを終了し、名前's3.checksum'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -変更なし包括的ステップ時間:0.0010499954223633<-退出
ステップビルド、名前'EndpointDiscoveryMiddleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -
------変更なし包括的ステップ時間:0.0010859966278076 <-ステップビルドを終了し、名前を付けます
'endpoint_parameter'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : --------変更なし包括的ステップ
時間:0.0011210441589355 <-ステップビルドを終了し、名前''
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし
包括的ステップ時間:0.0011789798736572 <-ステップビルドを終了し、「ApiCallMonitoringMiddleware」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -------変更なし包括的ステップ時間:
0.00124192237854 <-ステップビルドを終了し、「ビルダー」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : - - - - いいえ
変更包括的ステップ時間:0.0026319026947021 <-ステップの検証を終了し、名前を付けます
'input_validation_middleware'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : いいえ
変更包括的ステップ時間:0.0041940212249756 <-ステップ検証を終了し、「検証」に名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---変更なし包括的ステップ時間:0.0042209625244141 <-
ステップの初期化を終了し、「s3.head_object」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---変更なし
包括的ステップ時間:0.0042610168457031 <-ステップ初期化を終了し、「s3.auto_encode」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : -------変更なし包括的ステップ時間:0.0042870044708252<-ステップを終了
init、名前's3.location'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし包括的ステップ時間:
0.0043168067932129 <-ステップの初期化を終了し、「s3.save_as」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---------
変更なし包括的ステップ時間:0.0043439865112305 <-ステップ初期化を終了し、名前's3.source_file'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ---変更なし包括的ステップ時間:0.0043730735778809 <-
ステップの初期化を終了し、「s3.ssec」という名前を付けます
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : ------変更なし包括的ステップ
時間:0.0044050216674805 <-ステップの初期化を終了し、名前'idempotency_auto_fill'
答えへのリンク
2022-04-27
わからない
0
レビュー
答え : 変更なし包括的ステップ時間:0.0045740604400635|||HTTPエラー500
答えへのリンク
2022-04-27
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。