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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

0回答

1152閲覧

【AWS】 EC2でサーバー構築をしたが、画像アップロード機能が動作しない

TomoyukiSatou

総合スコア11

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2019/02/01 10:23

AWS初心者です。
EC2にてサーバー構築を行っているのですが、
画像アップロード機能がうまく動かず、詰まっております。

機能の概要といたしましては、

1)INPUT要素から画像をアップロード
2)base64に変換し、データベースへ格納
3)base64のデータをデコードし、サーバー内の 「upload_images」 フォルダへ格納
4)画像アップロードページに画像を表示

となります。

データベースには、base64形式で情報が入っているようですが、
画像データが 「upload_images」 フォルダに入りません。

デコードの時点で問題が起きていると考えているのですが、
サーバー構築する際のPHPのモジュールやphp.iniの設定など、
原因と思われることなんでも大丈夫ですので、アドバイスいただけないでしょうか。

なお、レンタルサーバーからAWSに移行で、レンタルDサーバーでは、問題なく動作しているので、
PHPの記述自体には、問題がないと考えております。

何卒よろしくお願いいたします。

■データベースに格納及びデコードする際のソース

<?php //データの数を確認する $stmt1 = $pdo->prepare('SELECT * FROM '.A_DB_NAME.'.'.TABLE_NAME.' ORDER BY disp_no'); $stmt1->execute(); while($row = $stmt1->fetch()){ $disp_no[]=$row['disp_no']; } $add_disp_no=max($disp_no)+1; //データベースに追加する $stmt2 = $pdo->prepare('INSERT INTO '.A_DB_NAME.'.'.TABLE_NAME.' (img_date,img_title,img_url,disp_no,img_64,img_category,disp_select) VALUES (:img_date,:img_title,:img_url,:disp_no,:img_64,:img_category,:disp_select)'); $stmt2->bindParam(':img_date', $img_date, PDO::PARAM_STR); $stmt2->bindParam(':img_title', $img_title, PDO::PARAM_STR); $stmt2->bindParam(':img_url', $img_url, PDO::PARAM_STR); $stmt2->bindParam(':disp_no', $add_disp_no, PDO::PARAM_STR); $stmt2->bindParam(':img_64', $img_64, PDO::PARAM_STR); $stmt2->bindParam(':img_category', $img_category, PDO::PARAM_STR); $stmt2->bindParam(':disp_select', $disp_select, PDO::PARAM_STR); $stmt2->execute(); //idの最大値を取得を取得 $stmt0 = $pdo->prepare('SELECT max(id) as max_id FROM '.A_DB_NAME.'.'.TABLE_NAME.' limit 1'); $stmt0->execute(); $row = $stmt0->fetch(); $max_id = $row['max_id']; $file_name = ARTIST . '_' . $max_id .'.jpg'; //base64をデコードしサーバーにアップロード $canvas = $img_64; $canvas = preg_replace("/data:[^,]+,/i","",$canvas);//ヘッダに「data:image/png;base64,」が付いているので、それは外す $canvas = base64_decode($canvas);//残りのデータはbase64エンコードされているので、デコードする $image = imagecreatefromstring($canvas);//まだ文字列の状態なので、画像リソース化 //imagesavealpha($image, TRUE); // 透明色の有効 imagejpeg($image ,'../upload_images/'. $file_name,60);//画像として保存(ディレクトリは任意) $stmt3 = $pdo->prepare('UPDATE '.A_DB_NAME.'.'.TABLE_NAME.' SET file_name = :file_name WHERE id = :max_id'); $stmt3->bindParam(':file_name', $file_name, PDO::PARAM_STR); $stmt3->bindParam(':max_id', $max_id, PDO::PARAM_STR); $stmt3->execute(); ?>

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

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

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

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

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

CHERRY

2019/02/01 11:42

Webサーバーのログを確認して、記載していただけないでしょうか。 また、php_info() の実行結果は、以前のサーバーと同じでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問