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

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

先週の1週間を取得

#先週
$last_sunday = date(“Y-m-d”,strtotime(“last Sunday”));
$last_week_cast_ranking_list = RankingCastDaily::getRankingListByCondition([
‘area_id’ => $area,
‘not_price_0’ => ‘true’,
‘start_date’ => date(“Y-m-d”,strtotime(“-6 day” .$last_sunday)),
‘end_date’ => date(“Y-m-d”,strtotime(“last Sunday”)),
]);

元記事を表示

PHP imagick convolveImage の引数の変更

PHP imagick の convolveImage は画像の畳み込み処理するメソッドです。
この convolveImage は、imagick 3.3.0 => 3.4.0 を境に受け取る引数の形式が変わりましたが、公式マニュアルが分かりにくいのでメモを作りました。

– 公式マニュアル
– https://www.php.net/manual/ja/imagick.convolveimage.php

# convolveImage の機能

画像に対して畳み込みの処理ができます。
例えば、以下のような畳み込みカーネルを与えるとブラー効果を得られます。

“`math
\frac{1}{16}
\begin{vmatrix}
1 & 2 & 1 \\
2 & 4 & 2 \\
1 & 2 & 1 \\
\end{vmatrix}
“`

| 元画像 | convoveImage 適用後 |
|—|—|
![input.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/163

元記事を表示

CodeSnifferを利用してコーディング規約を自動チェック

#初めに
開発を行っていく中、コーディング規約(PSR12)が守られているかをチェックを行うことは必須です。
しかし、自分で目視してもどこかで見落としがあったりリファクタリングに時間がかかったりしないでしょうか?

そんな時に、自動でコーディング規約を守られているかをチェックするツールが CodeSniffer です。

※今回のチェック対象は Laravel8 のWebアプリケーションです。

#PSR12とは

>PSR-12 は、コーディングスタイルガイドである PSR-2 の拡張および置き換えと、基本的なコーディング標準である PSR-1 への準拠が必要になります。
PSR-2 と同様に、PSR-12 の目的は、異なる作成者のコードを理解する(読む)際の認識の摩擦を減らすことです。

詳しい詳細は以下URLを参照。
[【PHP】PSR-12 Extended Coding Style(拡張コーディングスタイル)](https://www.ritolab.com/entry/208

元記事を表示

Laravel MAMP DBに接続設定

php artisan を実行しても

SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = laravel_db and table_name = migrations and table_type = ‘BASE TABLE’)

上記のエラーが返されて、接続にうまくいかないケース。

①MAMP websiteで接続パラメータの確認をします。
ページの下の方に「MySQL」と書かれたタブをクリックして開くと、パラメータ情報が記載されています。
![スクリーンショット 2022-02-16 20.45.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677104/62f8cf0d-ed3a-3f50-e153-483005492903.png)

②.envとdatabase.phpの編集
.envファイルを開

元記事を表示

【#1932エラー】phpMyAdminがおかしいとき

ローカルのDBって日頃手入れしていないと突然おかしくなったりしますよね。

昨夜の自分もそうでした。
急いでるときこそすぐ壊れる、phpMyAdminの応急処置について備忘録として記載します。

##①エラー:#1932 – Table ‘phpmyadmin.pma__tracking’ doesn’t exist in engine

自分はXAMPPからインストールしたphpMyAdminをそのまま使っていたのですが、突然上記のエラーが出てphpMyAdmin上の操作が何もできなくなりました。

phpmyadmin.pma__trackingはあります。
phpMyAdminのDBを物理的に削除し再度XAMPPから入れなおしてもエラー解消せず。

調べたところ、phpMyAdminのバージョンによってはバグで#1932のエラーが出続けるケースがあるようです。(このエラーに関する情報少なかったので、どのバージョンなのかは不明。自分は4.5.1で上記の事象になりました)
phpMyAdminのログイントップ下部により安定していると表示されていたバージョンをオフィシャルサイトから落と

元記事を表示

MySQLでdumpしたビューがテーブルとして登録されてしまう件を解消する

## 概要

* RDSのMySQL(5.7.33-log)からdumpしたデータをインポートしたらビューがテーブルとして登録されてしまった

## 解決方法

* ビューはビュー、テーブルはテーブルで別々にdumpする

## 解決例

私は業務の都合上PHPで実施しなければいけなかったので、こんな感じで実施しました。

“`sample.php
$ignore_views = [];
$sql = ‘select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = “schemaname” and TABLE_TYPE = “VIEW”;’;
$select_view_cmd = “/usr/bin/mysql -uusername -ppassword -hhostname schemaname -e'” . $sql . “‘”;
$views = [];

exec($select_view_cmd, $views, $result_code);
$view_tables = ”;
if ($res

元記事を表示

Nginx PHP(laravel) MySQLのDocker環境を作る途中の話

# 概要

– Nginx PHP(laravel) MySQLの組み合わせでDocker環境を作ったので途中経過も含めてまとめてみる

# 作ったもの

– システム要件

| 項目 | 情報 | バージョン | 備考 |
| — | — | — | — |
| Webサーバー | Nginx | 1.15.6 | |
| 言語 / フレームワーク | PHP / Laravel | 8.0 / 9 | |
| データベース | MySQL | 8.0 | |

# ディレクトリ構成

“`
laravel9_test/
├── docker
│ ├── docker-compose.yml
│ ├── mysql
│ │ ├── db
│ │ ├── initdb.d
│ │ │ └── create_database.sql
│ │ └── my.cnf
│ ├── nginx
│ │ └── default.conf
│ └── php
│ ├── Dockerfile

元記事を表示

PHPのPDOをDockerコンテナ内で使おうとしたところ、”No such file or directory” エラーが発生した話

# はじめに

docker-composeでPHP用とDB用の2つのコンテナを立てて、PHPのPDOの挙動を確認したところ、 `SQLSTATE[HY000] [2002] No such file or directory` というエラーが発生してしまったので、その時の解消方法を備忘のために残しておこうと思います。

# リポジトリ
https://github.com/b-coffin/pdo-tutorial

# 結論
結論としては、新規PDOを作成する際のhost名を、**docker-compose.ymlで指定したservice名**にすればよかっただけでした。

“`diff:src/index.php(一部)
-$pdo = new PDO(‘mysql:host=localhost;dbname=homestead;’, ‘root’, ‘secret’);
+$pdo = new PDO(‘mysql:host=db;dbname=homestead;’, ‘root’, ‘secret’);
“`

# 解説
composeを起動すると、デフォルトで単一の

元記事を表示

Laravelのログイン機能でRegister(情報登録)ができない時の対処法

### 発生したエラー

“` php
SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘mmictltd.admins’ doesn’t exist
“`
ブラウザ上で、上記エラーが発生してしまいました。
これは簡単にいうとテーブルがないよ。ということ。

### エラーまでの流れ
Laravelのログイン機能をインストールして、ログイン機能を表示するところまで
できたのですが、会員登録をしようとするとエラーが起きました。

認証機能をインストールすると、
>ユーザ登録のためのテーブルマイグレーションファイルは database/migrations/2014_10_12_000000_create_users_table.php と database/migrations/2014_10_12_100000_create_password_resets_table.php として標準で準備されている.

https://rinsaka.com/laravel/u03-auth.html

らしいのですが、自分

元記事を表示

PHP独学ノート その6

浮動小数点リテラル

浮動小数点リテラルは整数リテラルに比べると少し複雑。

一般的な「1.41421356」のような小数点数だけでなく、指数表現が存在するから。

<仮数部>e<符号><指数部>
の形式で表されるリテラルのこと。

<仮数部>×10の<符号><指数部>
で本来の小数値に変換できる。

一般的には非常に大きな(小さな)数値を表す為に利用する。

1.4142e101.4142×10の10乗
1412000000.0

1.173205e-71.173205×10の-7乗0.0000001173205

指数を

元記事を表示

Docker Composeで複数コンテナを跨ぐヘルスチェックを実装してみた

# はじめに

社内で現在担当しているプロジェクトではローカル環境には`docker compose`、CI環境には`codebuild`を使用しています。

今回は`codebuild`内でも`docker compose`を流用していて、自動テストを回す際にAPサーバーとDBサーバーの疎通確認をする必要があり、そこでハマった事や最終的に採用した方法を共有したいと思います。

あくまで多くある解決策の内の一つですので、オプションとして見ていただければ嬉しいです?‍♂️

# この記事でわかる事
– PHPやRailsなどのAPサーバーとして使うコンテナから、MySQLなどのDBサーバーとして使うコンテナへ確実に疎通できる事を保証する方法(connectionがないとか怒られない)

# 今回解決したい事
– CI環境でテストを自動実行している時に、DBサーバー(MySQL)のヘルスチェックが終了する前にAPサーバー(PHP)がテストを回してしまって、CIが失敗してしまうのを防ぎたい。

# 検証環境
– docker compose(version 3.9)
– APサーバー

元記事を表示

Dockerを使ったLaravelにログイン機能を追加する

## ログイン機能

Laravelにてログイン機能を追加しようと思っていて
「laravel ログイン機能」と検索すると
dockerを利用していない場合の、追加方法が出てきたりするので、以下のサイトを参考にさせていただきました!

https://qiita.com/mumucochimu/items/3d4ff8fa8fcb9826339f

また、以下のコードの意味がよく分からなかったため
“`
% docker-compose exec app bash
“`

こちらの記事も参考にさせていただきました!

https://qiita.com/tsuboyataiki/items/90dbe94553d3dea39b19

出先のwi-fiを利用して、npm install を使用としたら
エラーが起きてしまいました。

https://qiita.com/tenten0213/items/7ca15ce8b54acc3b5719

これはプロキシ環境下において、設定を変更する必要があったため
上記サイトを3上にさせていただきました。

ちなみに、プロキシについてよく理

元記事を表示

Dockerのlocalhostが突然、接続されなくなる問題を解決しました。

# 起きていた問題
突然ブラウザ上にて、localhostが接続されなくなる。
![スクリーンショット 2022-02-11 11.10.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2525372/37a5b636-d34b-954e-96a0-f4e14b78f381.png)

“` c
keitaromasuda@KeitaronoMacBook-Pro WebApp % ./vendor/bin/sail up -d
[+] Running 0/1
⠿ laravel.test Error 31.2s
[+] Building 28.1s (3/3) FINISHED

元記事を表示

スリーカードポーカー(簡易版)の勝敗判定

# 概要
 「独学エンジニア」というサービスでPHPの勉強をしており、そこの課題でまずはツーカードポーカーの勝敗判定をするコード、次にスリーカードポーカーの勝敗を判定するコードを自力で書いてみよう、というものがあったので、自己流でスリーカードポーカーを書いてみました。
※講座の趣旨から、「独学エンジニア」をやられている方は、こちらの記事は見ずに、まずは御自身でやってみてください。

# ポーカーのルール
 ちゃんとしたスリーカードポーカーのルールではなく、コードを練習するためのやや簡略化したバージョンです。

– カードは「2,3,4,5,6,7,8,9,10,J,Q,K,A」の13種類。強さは弱い順に左から。
– 役は強い順に、スリーカード、ストレート、ペア、ハイカードの4種類。
– スリーカード:3つのカードの数が全て同じだった場合
– ストレート:「3,4,5」,「10,J,Q」のように、強さが隣り合っている3つのカードが並んでいる場合。「2,3,A」の場合はAを最弱としてストレートとして扱う。「2,K,A」や2枚のカードの強さのみ隣り合っている場合はス

元記事を表示

PHP独学ノート その5

定義済みの定数
PHPの定数は自分で定義するばかりではなく、最初から用意された(定義済みの)定数が用意されている。

定義済みの定数はconst/defineで宣言することなく無条件に利用できる。

主な定義済み定数

|定数|概要|
|:-:|:-:|
|\_\_FILE__|実行中のファイル名(絶対パス)|
|\_\_DIR__|実行中のファイルが存在するフォルダ|
|\_\_LINE__|実行中の行番号|
|\_\_FUNCTION__|実行中の関数名|
|\_\_CLASS__|実行中のクラス名(所属する名前空間を含む)|
|\_\_METHOD__|実行中のメソッド名|
|\_\_TRAIT__|実行中のトレイト名(所属する名前空間を含む)|
|\_\_NAMESPACE__|現在の名前空間|
|DIRECTORY_SEPARATOR|フォルダの区切り文字(Windows環境では「¥」、Mac OS環境では「/」)|
|PATH_SEPARATOR|パスの区切り文字(W

元記事を表示

AWS App Runner でどれだけ楽に PHP8.1 環境をデプロイできるか試してみる

# はじめに

App Runner の使用感を知りたくて試したときのメモ書きです。

## App Runner とは

[AWS App Runner – フルマネージド型のコンテナアプリケーション \- Amazon Web Services](https://aws.amazon.com/jp/apprunner/)

> AWS App Runner は、コンテナ化されたウェブアプリケーションや API を開発者が簡単かつ迅速にデプロイできるフルマネージド型サービスです。大規模に、しかも事前のインフラ経験を必要とせずにデプロイすることができます。ソースコードからでも、コンテナイメージからでも始められます。App Runner がウェブアプリケーションを自動的にビルドおよびデプロイし、暗号化しつつトラフィックのロードバランスを実行します。また App Runner は、トラフィックのニーズに応じて自動的にスケールアップまたはスケールダウンします。App Runner を使用すれば、サーバーやスケーリングについて煩わされることもなく、アプリケーションに集中できる時間が増えます。

元記事を表示

Ethna(Ethnam)に入門してみた

PHPのフレームワークEthna(Ethnam)に入門してみたので、覚え書き。
PHPのサポートバージョンの関係で、後継のEthnamを使いました。
どちらかというと、環境構築的なところに重きを置いています。

## 環境

* OS: Amazon Linux 2

## 前提条件

* AWSで、Amazon Linux 2環境を起動し、セキュリティグループのインバウンドルールのSSH、HTTPがクライアントPCから接続できるようになっていること

## 手順

### 1. セキュリティグループのルール確認

前提条件に記載の内容ですが、文章だとわかりにくいので、キャプチャを載せておきます。
以下は、HTTPがIPv4, IPv6からの全ての接続、SSHがIPv4からのすべての接続を許可することを意味しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/6b28b62c-7645-cdb8-4308-2440659fda03.png)

実環境でのこの運用はセ

元記事を表示

Ubuntu20.04にphpenvを入れる

## はじめに
古いバージョンからUbuntuをアップデートしたりして使っている人はもしかしたら記載している以外にもライブラリやツールが必要になることがあるかもしれないです。
タイトルは「phpenvを入れる」となっていますが、普通のphp単体のビルドにも利用できる。。。かも?

他にも同じような内容でQiitaに記事を方がいらっしゃいますが、「PHPのバージョンが古いのでもしかしたら必要なライブラリが違うのかも」、とか「書いた人の環境ではそうだったのかな?」とか思ったので編集リクエストではなく新規で記事を書きました。
もしお互いに記事を更新して内容が同じになった場合はこちらの記事を消そうと思っています。

## 環境
– OS: Ubuntu 20.04.03(Desktop)
– PHP: 8.0.15

## コマンド
Desktop版のまっさらな状態からは以下のコマンドを実行すればたぶん大丈夫なはずです。

“`bash
$ sudo apt install \
autoconf \
build-essential \
libbz2-dev \
libcurl4-openss

元記事を表示

Laravelで複数のDBを繋ぐ時のTips

# 結論
ちょっとはサポートしていますが、“`migrate:fresh“`と“`RefreshDatabase“`が対応してないのが大分痛いです?

# DockerでMySQLの複数のデータベースの立ち上げ方が分からない
Laravel関係ないですけど、まずここからが大変なんですよね。結論からいうとdocker-compose.ymlでもDB1個しか対応していないため、コンテナ作成時に自動実行されるSQLファイルを設定して、地道にDB作成やらユーザー設定のSQLを書くというアプローチがベターのようです。変に分散するとアレなんで。

“`yml
db:
image: mysql:8.0.27
container_name: db
volumes:
– ./docker/db/data:/var/lib/mysql
– ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
# 複数のDBを立ち上げたいがdocker-composeのオプションで対応してないので、
#

元記事を表示

AWS Cloud9 に PHP 開発環境構築 (moodle)

moodle のお勉強とプラグイン開発のための環境として
AWS Cloud9 に開発環境を構築しましたので手順を残しておきます。

:::note
moodle を例に環境構築していますが、PHPの汎用的な開発・デバッグ環境として利用できると思います。
:::

# 利用環境
– [AWS Cloud9](https://aws.amazon.com/jp/cloud9/) (t3.small + Amazon Linux2)
– [PHP 8.0](https://www.php.net/)
– [MariaDB 10.5](https://mariadb.org/)
– [Moodle v3.11.5](https://docs.moodle.org/3x/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8)

# 環境構築

AWS CloudShell で下記コマンドを実行し、Cloud9 環境を作成する。

“`
aws cloud9 create-environment-ec2 \
–name Mood

元記事を表示

OTHERカテゴリの最新記事