PHP関連のことを調べてみた2022年03月19日

PHP関連のことを調べてみた2022年03月19日

Laradoc×Dockerでマイグレーション

# 前提条件
– mac Big Sir(intel core)
– LaraDockで環境構築済

※ 今回はマイグレーションの話なので、基本的な操作や概念は変わりませんが、マイグレーションのコマンドがDockerのワークスペースに入って行うので、多少異なっています。

参考:[Laravel8.x マイグレーション](https://readouble.com/laravel/8.x/ja/migrations.html)

# テーブルとマイグレーションファイルを作るコマンド

※ 必ず、Docker Desktopを立ち上げて、laradocディレクトリで
`$ docker-compose up -d workspace php-fpm nginx mysql phpmyadmin`
のように起動させた状態で行う。

`$ docker-compose exec workspace`+コマンド
で、Dockerのワークスペースに入らなくてもコマンドを実行できる。

そのため、マイグレーションコマンドは以下のようになる。
必ずlaradocのディレクトリに移動してから以下のコマ

元記事を表示

PHPDocについての個人メモ

# 概要

– PHPDocについてまとめられているリンクなどをここにメモ的に記載しておく。

# わかりやすく説明されていたリンク

– PHPDocそのものについて
– [https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/basic-syntax.html#id1](https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/basic-syntax.html#id1)
– PHPDocのタグについて
– [https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/tags/index.html](https://zonuexe.github.io/phpDocumentor2-ja/references/phpdoc/tags/index.html)

元記事を表示

【CloudWatch / Laravel / Fargate】特定のログだけ別のロググループに出力したい

## 特定のログだけ別のロググループに出力したい

Fargateでアプリを動かしている場合、標準エラーを拾ってそれをCloudWatchに流しています。
しかし、基本的なログとは別に、特定の操作だけロググループを別にしてログを収集したくなることがあります。
また、吐き出し先のログストリーム名は決まっていて、オートスケーリングでコンテナの数が増えても、全てのコンテナから同じログストリームに出力して欲しい。
何かいい方法がないかなと色々調べていました。

https://qiita.com/ggg-mzkr/items/0201b411425a75deca52

あんまりログの出し分けをしているものがなく、現在のプロジェクトではログチャネルはstderrで使ってしまっているので、
とりあえず自分でハンドラーを作ってみました。

## 実装

“`php: App\Aws\CloudWatchLogsHandler

元記事を表示

【PHP】エラー:Parse error: syntax error, unexpected

## エラー内容

Parse error: syntax error, unexpected

## 解決法

うっかりミス。

末尾の「;」とすべきところを「:」としてしまった。

“`diff_php
例)
– $val = ‘value’:
+ $val = ‘value’;
“`

元記事を表示

【Laravel】Homesteadで開発環境を構築する

## この記事に書いてあること
Laravel8.xの開発環境を構築する手順

## Laravel日本語ドキュメント
基本的には[こちら](https://readouble.com/laravel/8.x/ja/homestead.html)のドキュメントを参考にすれば問題なく構築できます。

## Laravelの開発環境構築について
Laravelでは開発環境の選択肢がいくつか準備されています。
ドキュメントではDocker DesktopやLaravel Sailなどのコンテナを利用した構築方法を推奨しているようです。

しかし、Dockerに馴染みがない人は、HomesteadというVagrantをベースとして環境構築方法がおすすめです。

## インストールと設定
Homestead環境を起動する前に、Vagrantと、以下のプロバイダのいずれかをインストールする必要があります。

– VirtualBox 6.1.x
– Parallels

Parallelsプロバイダを使用するには、[Parallels Vagrantプラグイン](https://github.co

元記事を表示

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(5), (6)

以下の続き。

https://qiita.com/yotty19911207/items/c4dc76d8c4146899a364

フォルダに続き、タスク一覧の作成もできた。
■(4)の復習:
・外部キー制約の設定

// 外部キーを設定する
$table->foreign(‘folder_id’)->references(‘id’)->on(‘folders’);

・Laravel が提供するクエリビルダの機能を使用したデータ操作

// 選ばれたフォルダに紐づくタスクを取得する
$tasks = Task::where(‘folder_id’, $current_folder->id)->get();

・モデルクラスにおけるリレーションを意識した記載
上記はリレーションを意識してモデルクラスを記載することで以下のように表現できる。

$tasks = $current_folder->tasks()->get();

リレーションを意識したモデルクラスの記載

class Folder extend

元記事を表示

Laravelのbladeテンプレートの作り方

# 概念
– レイアウトの親ファイルはresources/views/layoutsの中に入っている
– コンポートのようなパーツは、resources/viewsの中に直で入っている

# 親レイアウトの作り方
いつも通りHTMLを書いて、コンポーネントのようなパーツを挿入したいところに`@yield(‘パーツ名’)`を挿入するだけ

# パーツの作り方
1. `@extends(‘layouts.親レイアウトの名前’)`を最初に挿入して、どのレイアウトを継承するかを書く

2. `@section(‘パーツ名’)`で書き出して、パーツの名前を指定。ここで使ったパーツ名を親レイアウトで使う

3. `@endsection`で書き終わり

元記事を表示

Laravelでルーティング(web.php, コントローラー)の使い方

# web.phpに最初から入っているコードを使って解説

初めてlaravelのプロジェクトファイルを作って、laravel/uiをインストールすると、web.phpの最終行に以下の記述がある

“`web.php
Route::get(‘/home’, [App\Http\Controllers\HomeController::class, ‘index’])->name(‘home’);
“`

– `/home`: ドメインの後に入るファイルパスを指定
– `App\Http\Controllers\HomeController::class`: HomeControllerのclassメソッドを参照
– `->name(‘home’);`: ルーティング名

# web.phpに新しいルートを作ってみる
web.phpの最終行に先ほどのコードを複製して、ファイルパスの部分と、ルーティング名を変更する(ややこしくなるので名称は同じにしてOK)

“`web.php
Route::get(‘/任意の名前’, [App\Http\Controllers\HomeContro

元記事を表示

Laracastsでテストコードを勉強したときのエラーメモ

結構前に書いた記事なのですが、投稿せずに下書きにしたままだったので、今更だけど投稿!ww

『[Laracasts](https://laracasts.com/)』の、[こちらのページ](https://laracasts.com/series/build-a-laravel-app-with-tdd)でテストコードの書き方を学習をしていました。
但し、動画通りに書いても動かなかったりする箇所があったので、私なりに躓いた箇所を以下にご紹介!(と言っても最初の方の5点だけ。。。ww)
※ご注意:私の場合、環境はXAMPP for Windowsでした。それ以外で作る場合は、同じエラーが出るとは限らないので、参考程度にどうぞ。

その1:[EPISODE 2 Let’s Begin With a Test](https://laracasts.com/series/build-a-laravel-app-with-tdd/episodes/2) の回にて。

動画内では、
『public function a_user_can_create_a_project() 』という名前の関数を使

元記事を表示

pukiwikiプラグインをRectorPHPでphp8.1へ静的に自動修正させてみた

# はじめに
そろそろ、pukiwiki 1.5.4がリリースされる予定らしく、php8ではJITコンパイラーが実装され、処理が高速になるそうなのでpukiwikiプラグインをすべてphp8で動くようにRectorPHPで自動修正させようと思います。
ただ、あくまで静的解析して修正するのでもちろんファイルによっては手動で修正しなければならないこともあります。
Windowsで動作させてます。
他のOSでも動作するとは思いますが、その場合は参考程度でお願いします。

# 完成したファイル
すぐに使いたい方は次の見出しからは読まなくても大丈夫です。
RectorPHPがMITライセンスだったのでGitHubにて配布しておきます。
tweakphp8.phpについてはこちらでつくりました。
これもMITライセンスとしておきます。
– [RectorPHP](https://github.com/PTOM76/FileStorage/releases/download/rectorphpetc/RectorPHP.zip)

PHP8をインストールしているのであれば動作すると思います。
inp

元記事を表示

画像をリサイズして表示

## 画像をリサイズして表示する流れ
1.画像を読む込む
imagecreatefromjpeg(ファイルパスorURL|false)
画像オブジェクトをファイルパスもしくはURLから作成する。
成功した場合には画像オブジェクト、エラー時にfalseを返す。

2.画像サイズ取得
getimagesize(string $filename, array &$image_info = null): array|false
サポートする任意の形式の画像ファイルの大きさを決定し、 ファイルの型と高さ/幅を表す文字列を返します。
imagejpeg() 画像からJPEGファイル作成

3.リサイズ
imagecopyresized()  画像の一部をコピーしサイズを変更する
位置 (src_x,src_y) の src_image から幅 src_w と高さ src_h の長方形の領域を取り、位置(dst_x、dst_y)の宛先画像の長方形領域の間に配置。
|arg name |description|
|:—–|:—–|
|dst_image |コピー先の画像リンクリソー

元記事を表示

画像ファイルのアップロード

## 画像をアップロードの流れ
1. フォームからファイルを受け取り、バリデーションする。
2. 問題がなければ、サーバーの一時フォルダに保管。
3. move_uploaded_file()で一時フォルダから指定のパスに移動させ、保存。

**画像ファイルを送るフォーム**

“`html:index.php

      
      

“`

**フォームから画像ファイルを受け取る**
グローバル変数「FILES」
$_FILES[‘upload’][‘tmp_name’]はアップロードされたファイルの情報が格納されたグローバル変数です。
“`php:upload.php
image = $_FILES[‘image’]

元記事を表示

laravel学んで2か月で自サービスを開発した話 Part11

皆さんこんにちは!techfeedのPHP項目の日間で、自分の記事が1位になっていたのにビビりまくってます。
長かったけれど今回が最終回と思います!

胡蝶蘭を捨てるくらいならワイが欲しいので、サービス開発する編
公式ドキュメントの言う通り、パッケージをインストールされたら、Inertia.jsが導入されて???になった編
マルチログインを作ってみた編
デザインをtailwindcssに丸投げする編
Laradoc×DockerでLaravel環境を構築

# 前提条件
macOS Big Sur -bash
Docker Desktopを公式よりダウンロードしてインストールして立ち上げていること

# Laradocをインストール
プロジェクトのワークスペースになるフォルダをどこか適当な場所に作って、ターミナルでそのフォルダのディレクトリへ行って、以下のコマンドでLaradocをインストールする。

“`terminal
$ git clone https://github.com/Laradock/laradock.git
“`

# laradocの.envファイルを作成
インストールされてたら、laradocというフォルダが生成されるので、`$ cd laradoc`で移動しておいてから.env.exampleを複製して.envファイルを作る。

“`terminal
laradoc$ cp .env.example .env
“`

.envファイルをテキストエディタで開いて、以下の箇所を変更する。

データベースのデータ保存先を../dataディレクトリに変更。

“`.env
# Choose storage p

元記事を表示

EC2 を PHP8 ,Laravel9 にバージョンをアップデート

# はじめに
AWS EC2サーバーのPHPとLaravelを最新バージョンに、アップデートする方法についてまとめました。

# 環境
現環境
– Amazon Linux 2
– PHP 7.2.8
– Laravel 5.7.9
– nginx 1.12.2
– composer 1.10.15 (なくても可)

ゴール
– Amazon Linux 2
– PHP 8.0.16
– Laravel 9.5.1
– nginx 1.20.0
– composer 2.2.7

# PHPバージョンアップ
PHPバージョンは7.2なので、PHP8にバージョンアップします。

“`terminal
$ php -v
PHP 7.2.8
“`
PHPのバージョンを変える場合、PHPのパッケージをすべてアンインストールしてから PHP8を有効化する流れになります。

“`terminal
// パッケージアップデート
$ sudo yum update -y

// PHPのパッケージをすべてアンインストール
$ sudo yum -y remove php-*

// amazon

元記事を表示

DockerでLaravel8環境を作った際にタイムゾーン設定でハマった話

# はじめに
DockerでPHP公式イメージである「PHP:8.0-apache」を利用してLaravel8.4環境を構築した際に、タイムゾーン設定でハマった話。

# 環境
“`
docker -v
“`
Docker version 20.10.12

“`
docker compose version
“`
Docker Compose version v2.1.1

Ubuntu 20.40(WSL2)

上記環境でLaravelインストールまで終わった状態。

# 失敗手順
php.ini
“`
[Date]
date.timezone = “Asia/Tokyo”
[mbstring]
mbstring.internal_encoding = “UTF-8”
mbstring.language = “Japanese”
“`

上記「php.ini」をホスト側(ローカル)に作成。
最低限の設定を記述し、コンテナ側「/usr/local/etc/php/php.ini」にマウント。
この状態でLaravel上で「date(“Y-m-d H:i:s”)」を実行して

元記事を表示

xamppを消す

PHPの勉強にXAMPPを用いてたのですが、MySQLのルートパスワードを設定直後に忘れてしまい、phpMyAdminにアクセスできなくなりました。

同様のエラーを報告されている方もいましたが、私はそもそもの設定したパスワードを忘れてしまったので対応できませんでした。
https://pc-karuma.net/xampp-phpmyadmin-cannot-connect/

## どうしたか
XAMPPを再インストールしようとしました。
ですが、再インストールしても同様の症状が・・・。
アンインストールしても設定がどこかにキャッシュで残っているのでしょうか?

## XAMPPのアンインストールの仕方。

書いてました。
https://www.apachefriends.org/faq_stackman.html

>To uninstall XAMPP-VM, follow these steps:
>Delete the XAMPP-VM icon from the Applications folder.
>Remove all XAMPP-VM data by dele

元記事を表示

【Laravel】Web開発初心者が1週間で入門チュートリアルを実施した記録(4)

以下の続き。

https://qiita.com/yotty19911207/items/5b10aece3c01bc0e1779

フォルダ一覧までは作成できた。
■(1)〜(3)の復習:
・環境構築と設計
・開発のざっくり流れ
①ルーティング設定(web.php)
②コントローラーの作成・記載
③マイグレーションファイルの作成・記載
④マイグレーションの実行
⑤モデルクラスの作成
⑥テストデータの挿入
⑦コントローラーの追記・修正
⑧テンプレートの作成
・ルーティング設定(web.php)の記載方法

Route::get(‘/folders/{id}/tasks’, ‘TaskController@index’)->name(‘tasks.index’);

→getで/folders/{id}/tasksにリクエストがきたら、TaskControllerのindexメソッドを呼び出す。
  これを’tasks.index’と名づける。

・コントローラーの生成コマンド

php artisan make:controller (コントローラーの名前)

・マ

元記事を表示

Twitter Publishを使用せずTwitterの埋め込みを作る方法

# はじめに
この記事は自分のメモ的な感じで残しておきます。内容は余裕で既出だと思われます。
ユーザーにツイッターのリンクを入力してもらって、それを埋め込みにして使う方法を考えていた時のこと・・・

# 埋め込みの作り方
Twitterの埋め込みを作るときTwitter Publishというサイトを利用されると思います。
こちらの投稿を埋め込みするとき以下のようになります。

“`html

OTHERカテゴリの最新記事