現在、Laravelを使い、マッチングサイト作成の練習をしています。
Intervention Imageライブラリを使い、
画像投稿機能を作ろうしていますが、画像をアップロードしようとすると下記画面となります。
エラーコード
GD Library extension not available with this PHP installation.
GDライブラリが使えない、と言われていることはわかるのですが、
調べ方が悪いのか、なかなか解決策を見つけられておりません。
必要な情報等が必要でしたら、追記させていただきます。
よろしくお願いいたします。
環境
Docker
laravel 6.0.4
Mac OS Catlina 10.15.1
RegisterController
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\User; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Validator; use Intervention\Image\Facades\Image; class RegisterController extends Controller { ~省略~ protected function create(array $data) { $imageFile = $data['image']; $filenameWithExt = $imageFile->getClientOriginalName(); $fileName = pathinfo($filenameWithExt, PATHINFO_FILENAME); $extention = $imageFile->getClientOriginalExtension(); $fileNameToStore = $fileName.'_'.time().'.'.$extention; $fileData = file_get_contents($imageFile->getRealPath()); if ($extension = 'jpg'){ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); } if ($extension = 'jpeg'){ $data_url = 'data:image/jpg;base64,'. base64_encode($fileData); } if ($extension = 'png'){ $data_url = 'data:image/png;base64,'. base64_encode($fileData); } if ($extension = 'gif'){ $data_url = 'data:image/gif;base64,'. base64_encode($fileData); } $image = Image::make($data_url); $image->resize(400,400)->save(storage_path() . '/app/public/images/' . $fileNameToStore); return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'self_introduction' => $data['self_introduction'], 'sex' => $data['sex'], 'img_name' => $fileNameToStore, ]); ~省略~
register.blade.php
@extends('layouts.layout') @section('content') <div class="signupPage"> <header class="header"> <div>アカウントを作成</div> </header> <div class='container'> <form class="form mt-5" method="POST" action="{{ route('register') }}" enctype="multipart/form-data"> @csrf <label for="file_photo" class="rounded-circle userProfileImg"> <div class="userProfileImg_description">画像をアップロード</div> <i class="fas fa-camera fa-3x"></i> <input type="file" id="file_photo" name="image"> </label> <div class="userImgPreview" id="userImgPreview"> <img id="thumbnail" class="userImgPreview_content" accept="image/*" src=""> <p class="userImgPreview_text">画像をアップロード済み</p> </div> <div class="form-group @error('name')has-error @enderror"> <label>名前</label> <input type="text" name="name" class="form-control" placeholder="名前を入力してください"> @error('name') <span class="errorMessage"> {{ $message }} </span> @enderror </div> <div class="form-group @error('email')has-error @enderror"> <label>メールアドレス</label> <input type="email" name="email" class="form-control" placeholder="メールアドレスを入力してください"> @error('email') <span class="errorMessage"> {{ $message }} </span> @enderror </div> <div class="form-group @error('password')has-error @enderror"> <label>パスワード</label> <em>6文字以上入力してください</em> <input type="password" name="password" class="form-control" placeholder="パスワードを入力してください"> @error('password') <span class="errorMessage"> {{ $message }} </span> @enderror </div> <div class="form-group"> <label>確認用パスワード</label> <input type="password" name="password_confirmation" class="form-control" placeholder="パスワードを再度入力してください"> </div> <div class="form-group"> <div><label>性別</label></div> <div class="form-check form-check-inline"> <input class="form-check-input" name="sex" value="0" type="radio" id="inlineRadio1" checked> <label class="form-check-label" for="inlineRadio1">男</label> </div> <div class="form-check form-check-inline"> <input class="form-check-input" name="sex" value="1" type="radio" id="inlineRadio2"> <label class="form-check-label" for="inlineRadio2">女</label> </div> </div> <div class="form-group @error('self_introduction')has-error @enderror"> <label>自己紹介文</label> <textarea class="form-control" name="self_introduction" rows="10"></textarea> @error('self_introduction') <span class="errorMessage"> {{ $message }} </span> @enderror </div> </div> <div class="text-center"> <button type="submit" class="btn submitBtn">はじめる</button> <div class="linkToLogin"> <a href="{{ route('login') }}">ログインはこちら</a> </div> </div> </form> </div> </div> @endsection
Dockerfile
FROM php:7.3-fpm-alpine LABEL maintainer "ucan-lab" ARG TZ ENV COMPOSER_ALLOW_SUPERUSER 1 ENV COMPOSER_HOME /composer RUN set -eux && \ apk add --update-cache --no-cache --virtual=.build-dependencies tzdata && \ cp /usr/share/zoneinfo/${TZ} /etc/localtime && \ apk del .build-dependencies && \ docker-php-ext-install bcmath pdo_mysql && \ curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ composer config -g repos.packagist composer https://packagist.jp && \ composer global require hirak/prestissimo
回答2件
あなたの回答
tips
プレビュー