cakePHP2からCakePHP4への移行手順

ControllerおよびViewについては、元ソースをそのままコピーしてCakePHP4用に書き換える方法で移植しています。

モデルなどはbakeコマンドで自動生成したファイルを元に、必要なメソッドを元ソースからコピーし、CakePHP4用に書き換えて移植しています。

・Configフォルダ配下のファイル構成が変わっているので、CakePHP4用に移植しています。
・URLのルールが変わっている所があるため、Routes.phpに個別に記載が必要なものは記載しています。
・SP用のViewファイルを配置するフォルダ構成をCakePHP4のものに合わせています。
・formやPaginator等の記載ルールが変わったものは個別に対応しています。

0

Laravel 6.0 でAWS S3サービスでの画像格納コーディング手順

前提

  • Laravel version 6.0 のプロジェクトは作成済み
  • AWSアカウントは作成済み

S3用のIAMを作成

まずはAWSのコンソールの右上から、自分のアカウントをクリックしアコーディオンを開き、「My Security Credentisals」をクリック

スクリーンショット 2018-09-02 11.16.16.png

遷移したら、左側のメニューから「Users」をクリック

スクリーンショット 2018-09-02 11.17.21.png

遷移したら、「Add User」をクリック

スクリーンショット 2018-09-02 11.17.35.png

遷移したら、「User name」に適当な名前を入力し、「Select AWS access type」は「Programmatic access」を選択し、「Next: Permissions」をクリック

スクリーンショット 2018-09-02 11.28.46.png

遷移したら、「Attach existing policies directly」をクリック

スクリーンショット 2018-09-02 11.29.40.png

検索画面が表示されるので、S3を検索し、「AmazonS3FullAccess」にチェックを入れ、「Next: Review」をクリック

スクリーンショット 2018-09-02 11.30.39.png

確認画面が表示されるので、「Create User」をクリック

スクリーンショット 2018-09-02 11.30.56.png

最後に、Access key IDとSecret access keyが表示されるので、必ずメモすること!

メモしたら「Close」をクリックして、S3のアカウント作成は完了です

スクリーンショット 2018-09-02 11.31.26.png

Bucketの作成

アカウントを作成したら、次はS3でBucketを作成します

S3の画面から、「Create bucket」をクリック

スクリーンショット 2018-09-02 11.59.52.png

モーダルが表示されるので、「Bucket name」に適当な名前を入力し、Regionは「Asia Pacific(Tokyo)」を選択し、「Next」をクリック

スクリーンショット 2018-09-02 12.05.46.png

遷移後、オプションを設定するモーダルが表示されます

設定系は要件によりけりですが、もちろん全てオフでも大丈夫です

簡単に各オプションの説明を書いておきます

「Versioning」は保存するファイルを上書きする際に以前のファイルを保持しておくオプションで、誤って上書きして以前のファイルを削除してしまった時に便利なオプションです

「Server access logging」はbucket内の操作に対してログを取ってくれるオプションです

「Tags」はbucketに任意のタグを割り当てることができ、コスト配分レポートなどで利用できるオプションです

「Object-level logging」はオブジェクト毎の操作に対してログを取ってくれるオプションです(Server access loggingとイマイチ違いはわからなかった)

「Default encryption」はデフォルトでアップロードするファイルを暗号化するオプションです

「CloudWatch request metrics」はほぼリアルタイムなメトリクスオプションです

スクリーンショット 2018-09-02 12.25.35.png

遷移後、bucketに対してAWSアカウントを紐づけする画面になります

デフォルトで自分のアカウントが入っています

特に他のアカウントを紐づけする必要がなければ、「Next」をクリック

スクリーンショット 2018-09-02 12.28.16.png

遷移後、プレビューが表示され問題なければ「Create bucket」をクリックし完了

スクリーンショット 2018-09-02 12.30.17.png

LaravelでのS3パッケージ格納利用

パッケージのインストール

Larave公式が言っている、s3用のパッケージをインストールする

 composer require league/flysystem-aws-s3-v3:"^1.0"

S3の環境情報を登録

.envファイルに下記情報を追記する

AWS_ACCESS_KEY_ID= 上記手順でユーザーを作成した際に表示されたAccess key ID
AWS_SECRET_ACCESS_KEY= 上記手順でユーザーを作成した際に表示されたSecret access key
AWS_DEFAULT_REGION=ap-northeast-1 (東京リージョンで作成したため)
AWS_BUCKET= 上記手順で作成したbucket名

アップロード

HTMLの作成

<form action="/upload" method="post" enctype="multipart/form-data">
  {{ csrf_field() }}
  <input type="file" name="file">
  <button type="submit">保存</button>
</form>

画像格納用Controllerの作成

public function upload(Request $request)
{
    $file = $request->file('file');
    // 第一引数はディレクトリの指定
    // 第二引数はファイル
    // 第三引数はpublickを指定することで、URLによるアクセスが可能となる
    $path = Storage::disk('s3')->putFile('/', $file, 'public');
    // hogeディレクトリにアップロード
    // $path = Storage::disk('s3')->putFile('/hoge', $file, 'public');
    // ファイル名を指定する場合はputFileAsを利用する
    // $path = Storage::disk('s3')->putFileAs('/', $file, 'hoge.jpg', 'public');
    return redirect('/');
}

結果

スクリーンショット 2018-09-02 18.02.44.png

画像表示用Controllerの作成

public function disp()
{
    $path = Storage::disk('s3')->url('hoge.jpg');
    return view('disp', compact('path'));
}

HTMLの作成

<img src="{{$path}}">

最後に参考サイトです

https://qiita.com/ohmoto_2020/items/8cd92e08be5a28d8a053

https://qiita.com/miriwo/items/cc3c384e694170862256

https://code-pocket.info/20200624304/

https://www.ctc-g.co.jp/solutions/cloud/column/article/16.html

0

dockerメモリ不足 と apache2タイムアウトの対応方法

事象

500のエラー画面で原因がよくつかめない事象となりました

Laravelログは下記が発生

[2021-05-03 00:53:15] local.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at /var/www/html/vendor/dompdf/dompdf/src/Css/Style.php:879)
[stacktrace]
#0 {main}
"} 

原因

  • 1つ目の原因は、Laravelログにでておりましたメモリ不足です。
  • 2つ目の原因はapache でのタイムアウトなのでこちらが 500エラーで原因がつかめなくて時間を消費しました

対策

(1) phpinfo.php を作成し、”<?phpphpinfo();?>” をコーディングしました。こちらを表示して調査しました


(2)メモリ不足は、PHP.ini ファイルです。Docker作成済みなので直接vim で追加しました。vimインストールは
apt-get install vim
vim /usr/local/etc/php/php.ini
を行いました。下記変更です


(3)apacheの設定は
vim /etc/apache2/apache2.conf

docker再起動で変更されますのでお確かめください

その他補足

viの使い方は、下記おすすめです

https://blog.codecamp.jp/vim-command

Docker環境なれると、上記はLinux環境設定です

楽ですね。少し前では大変な開発環境ですが、あっさりできるので最近の若い人たちは恵まれてるなーと感じます。

0

dockerのbuild できなくなった。作成者未記載はできなくなったぞー!

いままでbuild できたのにエラ-になりました

docker Hub の過去の作成者が未記入なものがbuildできなくなっております
その際は設定を変更してください

{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": false
}
}
0

おすすめmixhostレンタルサーバの登録からサイト公開まで。超簡単!!

仕事や趣味に関する情報発信をしたいと考えた時、最も手軽なのはブログやTwitterInstagramFacebookなどのSNSでしょう。動画や音声ならYouTubeですね。しかし、始めようと思ったらレンタルサーバーを利用する必要があります。

そこでレンタルサーバーを使って全世界へ情報発信を行うのです。その名の通りサーバーを借りることのできるサービスです。

では、mixhostで始めてみましょう

下記をクリックしましょう

プランを選択する

SSD350GB で8GBメモリであれば大量データを取り扱わない限りは問題ありません

個人やスモールビジネスであれば「おすすめ」どおりで問題はないです。

契約内容記入

  • 氏名
  • メールアドレス
  • 住所
  • 個人/法人
  • 会社名(個人利用の場合は不要)
  • パスワード

きちんと利用規約を読んで申し込みをしてください。

この時、登録をしている時点で、使い方や動作速度に疑問を感じたら1ケ月無料なので検討し直しも可能です。その後、契約内容の確認メールが送られてきます。

場合によっては、仮登録という形になります。その場合は、メールに記載されている本登録用のURLにアクセスすることで契約完了です。

コントロールパネルで入ってみましょう

メールにはコントロールパネル(いろいろな設定できる)のURLがのっております

クリックしてみてください

ご自分のIDとパスワードでお入りください

コントロールパネル操作

すごいですね。メールサーバやWordpress等多彩です

ターミナルで操作ですが、wordpress や Laravel など選択ですぐに動作します

かんたんですよ

アプリはこんなに揃ってます
私はLaravelで重宝しているのです

※詳細な使い方は時間が取れ次第また整理していきますので、是非mixhost使ってみてくださいね

補足)ドメイン名の移行手順

https://help.mixhost.jp/hc/ja/articles/115003743271-%E4%BB%96%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AE%E7%A7%BB%E8%BB%A2%E6%96%B9%E6%B3%95

0

docker でvim 使いたいですよね

vimとは

ファイルの作成や編集時に用いる、linuxの標準的なコマンド。
linuxで、cuiでのファイル編集時には、まず「vim」を利用することが多いのでの操作は覚える必要があります。
GUIに慣れた人には「iキー」が挿入であったり、編集後の書き込みが「:wq」となっていたり、初めはよくわからないと思いますが慣れれば、苦ではありません。

containerにログイン

・docker container exec -ti コンテナ名 bash

Vimのインストール

OSによってインストール方法が変わる。

・Redhat系

yum install vim

・Debian/Ubuntu系

apt-get update
apt-get install vim
0

PHPのメモリ上限をアップする方法

エラーメッセージ

Fatal error: Allowed memory size of xxxxxx bytes exhausted

が発生することがある場合の対象方法を説明いたします

初期ではPHPのメモリ上限が少なく設定されています。その際に上記メッセージに遭遇することがあります。
 この場合はPHPのメモリ使用量の上限を変更するのですが、そのときに設定するパラメータがmemory_limitです。

現在使用可能なメモリ使用量の確認

現在PHPに割り当てられているメモリ使用量を確認します。

$ php -i | grep memory_limit

memory_limit => 128M => 128M

memory_limitはphp.iniに設定されています。そのため、読み込まれているphp.iniがどこにあるかパスを確認しましょう。

$ php -i | grep php.ini

Configuration File (php.ini) Path => /path/to/php/etc
Loaded Configuration File => /path/to/php/etc/php.ini

メモリ使用量を任意の値に変更

php.iniのmemory_limitを編集して、割り当てたいメモリ量を設定します。
512MBのメモリを割り当てた場合の設定を次に示します。

memory_limit = 512M

メモリ使用量を無制限に変更する

メモリの使用量を無制限にしたい場合は、memory_limitに”-1″を設定します。。

memory_limit = -1
0

Dockerで不要なコンテナ・イメージの見つけ方

イメージ

$ docker images --filter "dangling=true"

不要なイメージを削除

$ docker image prune

ちなみに、v1.2.5 以前では以下のコマンドで削除していました。

$ docker rmi $(docker images -f "dangling=true" -q)

コンテナ

不要なコンテナ一覧

$ docker ps -f "status=exited"

停止コンテナ一括削除

$ docker container prune

0

docker 削除(docker-compose.ymlのvolumesセクションに書かれた名前付きボリュームとコンテナにアタッチされたanonymous volumeが削除)

docker-compose down --rmi all --volumes --remove-orphans

downコマンドの特性としては、upコマンドと真逆のことをするコマンドということになる。つまり、upコマンドで作られうるもの(イメージ、コンテナ、ボリューム、ネットワーク)をすべて削除する。やり直しに有効なコマンドなのです

--rmiオプションは、削除するイメージの種類を指定する。allはすべてのイメージ。localはフィールドにカスタムタグのないイメージのみを削除する。--rmiオプションを省略すると、イメージは消されない。

--volumesオプションは、docker-compose.ymlvolumesセクションに書かれた名前付きボリュームとコンテナにアタッチされたanonymous volumeが削除される。

--remove-orphansオプションは、docker-compose.ymlで定義から削除されたサービス用の未定義コンテナも削除される。

0