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

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

ゆっくり見てってね[転職用ポートフォリオ ]


# 初めに

初めまして千葉県在住の転職活動をしている28歳です。

前職は遺品整理や飲食店の店長をしていました。
ポートフォリオはインフラとバックエンドを重点的に力を入れて作りました。

この記事ではポートフォリオの操作手順を分かりやすくしたり、苦労した点や今後の課題についてご紹介していきます。

    /            \
   │  ゆっくり見ていってね .│
   │              │
    \_______  _____ノ
            ノノ
   __   _____   ______
  ,´ _,, ‘-´ ̄ ̄`-ゝ 、_ イ、
  ’r ´          ヽ、ン、
 ,’==─-      -─==’, i
 i イ iゝ、イ人レ/_ルヽイ i |
 レリイi (ヒ_]     ヒ_ン ).| .|、i .||
  !Y!””  ,___,   “” 「 !ノ i |
  L.’,.   ヽ _ン    L」 ノ| .|
   | ||ヽ、       ,イ| ||イ| /

元記事を表示

【WordPress】(個人的に)クライアントワークでほぼ必須級のWordPressプラグイン【おすすめプラグイン】

もはや何番煎じか分かりませんが。
筆者は物忘れが激しいので作業中に「あ、あれ入れ忘れてた…」とか「あれ、あのいつものプラグイン名前なんだっけ…?」が頻発するため、備忘録を兼ねてまとめています。
ちなみに筆者のWordPress制作はクライアントワークがほぼ全てなので、個人ブログ等では必要ないのも多いかもしれません。

※~~思いついた物から書いてるので~~紹介順は順不同です。

## 1. あらゆるカスタマイズで必須『Advanced Custom Fields Pro』

Advanced Custom Fields

もはや説明不要かと思われます。カスタムフィールドを劇的に使いやすくするプラグイン。
クライアント側で更新する何かがある場合は必ず入れていますし、それ以外のカスタマイズ(大抵ACF BlockかOptionPage)でも頻繁に使っています。

Gutenbergが登場して久しいですが、企業ホームページなどでは自由なブロックエディタよりも型の決まった更新方法が好まれやすい(そして大抵それで事足りる)ため、

元記事を表示

【Laravel】Laravel8でマルチ認証を実装(UI方式)

# はじめに
Laravel8で一般ログインと管理ログインを分けるために、マルチ認証を実装した方法を記載します。

# 概要
ユーザーは、
* 一般ユーザー側を user
* 管理者側を admin

URLは、
* 一般ユーザー側 user
ログイン画面 /login

* 管理側 admin
ログイン画面 /admin/login

として2つの管理画面を作ることを想定して実装します。

# 前提
* composerがインストールされている状態であること
* laravel/uiを使用する

# 手順
### 1 Laravelプロジェクトを作成

“`
//Laravelプロジェクト作成
$ composer create-project laravel/laravel sample-auth “8.*”
//作成したプロジェクトに移動
$ cd sample-auth
“`

### 2 データベースを作って、 .env に接続設定をする

“`.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
D

元記事を表示

リーダブルコード ざっくり解説

へい、豚野郎です。
最近、「Qiitaの更新がないですね」と言われますが、僕にも僕にも事情があるのだ(適当)。

と、いうわけで書いてない間に何をしていたかというと、
「リーダブルコード」という本を読んでいました。

専門学校時代、先生とか「この本は素晴らしい本だ!」って言ってた(気がする)ので
買って読んだのですが、PHPerの僕にはちょっとわからない(言い訳)なところもあり
解読に時間がかかってしまいました。
それがQiitaを放置していた原因です(言い訳)。

ただ、未だにわかっていないところもあるので
それは今後のエンジニアとしての経験で補っていつかわかる日が来る様にします。

そのため、「ざっくり解説」です。
詳しい内容は是非、買って読んでください。

# 1. コードは読みやすく・理解しやすく
【ポイント】
・バグが見つけやすくなる。
・自分のコードが流用される可能性がある。
・他の人がわかるようにするため。
・他の人が理解する時間を短くする。

# 2. 名前の情報はわかりやすく
【ポイント】
・明確な単語を使う。
・汎用的な名前は避ける。
・具体的にわかるようにする

元記事を表示

10: 通常配列と連想配列との混在,

通常配列と連想配列との混在

そもそも通常配列連想配列との区別はないので、これらを混在させることも可能。

“`
‘太郎’, 15 => ‘二郎’, ‘鈴木’ => ‘三郎’, ‘四郎’];

print_r($data);

//結果:

Array
(
[山田] => 太郎
[15] => 次郎
[鈴木] => 三郎
[16] => 次郎
)
“`

この場合も、キーを省略した場合には、「その時点での最大インデックス+1」が次のインデックスとして割り振られる。

キーは整数値/文字列に変換される

ここまではキーとして整数、または文字列を指定してきたが、そのほかにも、任意のデータ型を指定できる。
下記例
ただし、整数/文字列

元記事を表示

【翻訳】php_filter_float()の脆弱性について(CVE-2021-21708)

## 元記事

今回は、こちらの記事を翻訳してみました。
誤訳等ありましたら、コメント欄にて教えていただけますと幸いです。

https://nakedsecurity.sophos.com/2022/02/18/irony-alert-php-fixes-security-flaw-in-input-validation-code/

## 本編

PHPを利用されている方々は、現在自分が利用しているPHPバージョンが最新かどうか確認しましょう。

– PHP7.4 -> **7.4.28**
– PHP8.0 -> **8.0.16**
– PHP8.1 -> **8.1.3**

上記、PHP最新バージョンが**2022-02-17**にリリースされました。
最新バージョンでは、php_filter_float関数が原因のuse-after-free脆弱性[^4]([CVE-2021-21708](https://access.redhat.com/security/cve/cve-2021-21708))を含む、[複数のメモリ管理に関するバグが修正](https://www.p

元記事を表示

【WordPressセキュリティ対策】投稿者アーカイブを無効化してWordPressのユーザ名を隠す方法

WordPressで構築したサイトのアクセスログを見ると、ページには表示させていないのに何故かログインアカウントでアタックされている場合があります。
これはWordPressが自動生成する投稿者アーカイブが有効になっているからです。攻撃者はこの機能を悪用して不正ログインを試みます。

## 投稿者アーカイブとは

投稿者アーカイブとは、WordPress が自動生成する投稿者ごとの投稿をまとめる機能のことです。
ちょっと技術的なことを言うと、テーマの`author.php`に規定されているページのことです。
初期状態のWordPressでは投稿者ごとに投稿者アーカイブが作成されます。そのため、WordPressのユーザー名が閲覧者にバレてしまい、大いなるセキュリティの穴となることがあります。

## 投稿者アーカイブを見る方法

WordPressサイトで、以下のようなURLにアクセスすると、対象ユーザーが作成した投稿の一覧ページが表示されます。

“`
http://example.com/author/ユーザー名/
“`

また、以下のように`?author=1`を付けてアクセ

元記事を表示

WordPress5.5で標準搭載されたXMLサイトマップ機能を無効化する方法

WordPress5.5からXMLサイトマップを出力する機能が標準で追加されました。
Google XML Sitemapsとか別のプラグインを使ってXMLサイトマップを出力している場合が多いと思います。
そういったすでに使っている機能が重複しないよう、標準のXMLサイトマップ機能を無効にする方法をまとめておきます。

## 追加されたXMLサイトマップ機能

はじめに、新たに標準搭載されたXMLサイトマップ機能についての説明です。
XMLサイトマップ機能はWordPress5.5から自動で有効になっていて、`wp-sitemap.xml`というファイル名でアクセスできます。
`$ドメイン/wp-sitemap.xml`というURLにアクセスすると、下記のようなサイトマップが表示されます。

![xmlサイトマップ-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1017333/8a25d874-dd67-556a-6ef5-84e9e5872579.png)

> **補足事項**
> `wp-si

元記事を表示

【個人開発】教員向け授業計画作成サービスを作ってみた。

# はじめに
![teaching_plan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1185943/ca1828d9-c3fc-75a4-95a4-e25738e5939c.png)

こんにちは、まーです。
【Twitter】

【今回作成したサービス】
https://teachingplan.msy-a.com/

今回は、以前Laravel+Vue.jsで作成した**授業計画(指導案)作成サービス**をご紹介したいと思います。

# 要件概要
### ○導入
日々多忙な教員にとって毎回の授業内容(指導案)を**スピーディー**に作成することはとても重要になります。

特に、教育実習生や教員になったばかりの先生は、授業の経験値がなく、毎時間授業の計画を考えることは大きな負担です。自分自身の教育実習に行った経験、教員の友人からのヒアリングから間違いないと思います。

授業計画を効率的に作成することは、**授業の質**に関わ

元記事を表示

【Laravel】PHPUnitの実行でDBを汚染しないためにできる簡単なこと

# 環境

OS: Windows 10
PHP: 8.1.2
Laravel Framework: 8.81.0
docker-compose: 1.29.2
PHPUnit: 9.5.10
MySQL: 8.0

`Laravel Sail`を使用して、Laravelプロジェクトを立ち上げています。
プロジェクトを立ち上げる部分は、[こちらのドキュメント](https://readouble.com/laravel/8.x/ja/installation.html#your-first-laravel-project)でご確認ください。

# `RefreshDatabase` DBの状態に影響されずテストする

`use RefreshDatabase;`をしてあげると、
__テストを実行する際に前後のDBの状態を考える必要がなくなります__

各テスト毎にDBをリフレッシュするため、まっさらな状態にしてくれるので、
DBの状態を確認するアサーションである

– `$this->assertDatabaseCount(…)

元記事を表示

Laravel8 Localhostリダイレクトエラーの解決方法が意外と簡単だった件について

### エラー内容
![スクリーンショット 2022-02-25 13.24.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2525372/9c8a35cf-b861-6482-a8db-00647deb3aad.png)

https://reffect.co.jp/laravel/laravel-multi-authentication-understand#i-9

Laravelでマルチ認証を追加しようと思い、上記の記事を見ながら
作成していたところ
登録ボタンを押すと、リダイレクトエラーになってしまいました。

初めは、ルーティングやコントローラーなどでコーディングミスをしているのかと
色々調べて、試してみたのですが
一向に解決せず、正直絶望していました。

### 解決方法
ある時、エラー画面に出ている「Cookieを消去してみてください」という言葉に
従ってCookieを削除してみました。
(以前、同じようなエラーでCookieを消去しても変化がなかったので、試してませんでした)

元記事を表示

PHPUnitとGitHub ActionsとCoverallsを繋げて自動的に更新されるカバレッジのバッジを生成する

GitHubを見ているとREADMEにコードのカバレッジが書かれたバッジが貼ってあるのをよく見ますが、アレを実際に自分が作っているPHPのライブラリのレポジトリに貼ってみたのでその方法を紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41743/ddd0bbb6-6840-6a8a-0a38-974dc621abdb.png)

今回はCoverallsというテストのカバレッジの結果を収集してくれるサービスを利用してバッジを作りました。

また、手作業でカバレッジのレポートを上げるのは効率が悪いので、GitHub Actionsを用いてコードが変更されると自動で上げるようにしました。

## 用意するもの
– GitHub Actionsの設定
– テストを実行してカバレッジレポートを送信するのに必要です
– Coverallsのアカウント
– あらかじめGitHubと連携しておいてください
– テストされるコードとテストコード

## Coverallsと

元記事を表示

CentOS8×PHP7.3「Failed to download metadata for repo ‘AppStream’」で怒られる時

## 現象
~~~
Error: Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
~~~

## 原因
2021年末でCentOS8のサポートが切れたので、**ミラーサイトが停止している**ご様子でした。?

## 解決策
リポジトリのダウンロードの向き先を**アーカイブ**に変更します!
“`
$ sed -i ‘s/mirrorlist/#mirrorlist/g’ /etc/yum.repos.d/CentOS-*
$ sed -i ‘s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g’ /etc/yum.repos.d/CentOS-*
“`
## PHPのバージョンを変更する場合
CentOS8のデフォルトのPHPバージョンは**PHP7.2**になります。
**別バージョン**を使用したい場合は、remiリポジトリを使

元記事を表示

Laravelのeloquentでjoinしたときに同じカラム名でバグる可能性

aテーブルのid=1

bテーブルのid=2でa_id=1だとして、
これをjoinすると

“`php
$a = A::join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とする。

このとき

“`php
$a->id; // 2
“`

となる現象が起きました。
同じidというカラム名だからっぽいです。
このままだとidをキーにするのでリレーションで辿るデータなどがうまくとれないなど発生します。
知らないと結構やらかしそうな内容です。

回避は

“`php
$a = A::select(‘*’, ‘a.id as id’)->join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とかですね。
あとはこれを起こさないためのグローバルスコープなんかもissueに書かれてました。

“`php
trait OnlyMyColumnsTrait
{
public static function bootOnlyMyColumnsTrait()
{
stati

元記事を表示

【Laravel】laravel-adminの導入から初期設定まで

# 概要
laravel-adminを利用して、インストールから初期設定までを行います。
実務でLaravelを使う機会があればlaravel-adminを使用する場面があるかもしれないのでこの機会にまずは設定をしていきます。

※Laravelプロジェクトがインストール済みの前提で進めます。

# laravel-adminとは
Laravelで簡単に管理画面が構築できるライブラリです。

ドキュメントやデモサイトなど使用するために必要な資料が充実しており、難しいカスタムを行う必要がなければものすごく簡単に管理画面が構築できます。

[公式ドキュメント](https://www.ritolab.com/entry/208#:~:text=%E7%84%A1%E5%90%8D%E3%82%AF%E3%83%A9%E3%82%B9-,%E6%A6%82%E8%A6%81,%E6%91%A9%E6%93%A6%E3%82%92%E6%B8%9B%E3%82%89%E3%81%99%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82)

[demoサイト

元記事を表示

php xml request with curl

“`



Rahul kumar
10
5th
25

‘;

$url = “https://www.website.com/ws”;

$ch = curl_init();
if (!$ch) {
die(“Couldn’t initialize a cURL handle”);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt

元記事を表示

[Laravel] HTTPS での接続を強制する

Laravel を使ったサイトをさっき検証環境、本番環境にリリースしたらHTTPとHTTPSが混在してるよ!!という事でうまく動きませんでした。

“`
{!! Form::open(array(‘url’ => ‘/login’, ‘role’ => ‘form’, ‘name’ => ‘loginForm’, ‘id’ => ‘loginForm’, ‘class’ => ‘login’)) !!}
“`

こういう記述があるとHTTPSページ内にあるフォームのPOST先がHTTPになってエラーになったりします。

こちらの解決方法を以下に記します。

# 結論
web.php に以下を記述します。

“`php
if (App::environment(‘production’) || App::environment(‘staging’)) {
URL::forceScheme(‘https’);
}
“`

`App::environment(‘production’)`は本番環境の.envファイルに`APP_ENV=production`と記述されている前

元記事を表示

Laravel で主キー(プライマリキー)を ULID で登録する方法

# 環境

Laravel Framework 8.54.0
PHP 8.0.9
docker-compose version 1.29.2
rorecek/laravel-ulid:^2.0

# 手順

## `rorecek/laravel-ulid`

https://github.com/rorecek/laravel-ulid

まずは、`rorecek/laravel-ulid`のインストールを行います。
ターミナルを開き、以下のコマンドを入力します。

“`sh:ターミナル(sail)
$ ./vendor/bin/sail composer require rorecek/laravel-ulid:^2.0
“`

“`sh:ターミナル(composer)
$ composer require rorecek/laravel-ulid:^2.0
“`

これで、インストールは完了しました。

## マイグレーション

次に、マイグレーションから編集していきます。
今回はユーザに関しての変更を行おうと思うので、
デフォルトの`database/migration

元記事を表示

Laravel9.x変更点

# はじめに
[LaravelのUpgrade Guide](https://laravel.com/docs/9.x/upgrade)をもとに影響度がミディアム以上のものを日本語訳もといDeepLにつっこんでみたものです。
明らかに変な日本語になってると感じたとこは自力で頑張ります。

# 目次
[依存関係の更新](#依存関係の更新)
[PHPの戻り値の型](#PHPの戻り値の型)
[アプリケーション](#アプリケーション)
[Flysystem_3.x](#Flysystem_3.x)
[ヘルパー関数](#ヘルパー関数)
[HTTP Client](#HTTP_Client)
[Symfony_Mailer](#Symfony_Mailer)
[Packages](#Packages)
[Test](#Test)
[Validation](#Validation)

# 依存関係の更新
PHPのバージョンは 8.0.2以上を必要とします。

composer.jsonで以下の依存関係を更新する必要があります。

– laravel/framewor

元記事を表示

twitterを快活クラブから借りたパソコンでリモワで見るWebサービス

https://jflabo.naturum.ne.jp/e3467003.html

リモワ対応 借りたマシンでも仕事できるように調整中

一時行政系も 効率よく情報を配信する道具として使っていましたね
あのあと使えなくなった人が結構いて 悩ましいです。

元記事を表示

OTHERカテゴリの最新記事