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

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

JavaScriptで昔懐かしのスネークゲームを作ってみたよ。

# はじめに

JavaScriptの復習もかねて、スネークゲームを作ってみたよ。
ついでにPHPでWebAPIを実装して非同期処理にも挑戦してみた。

# ゲーム画面

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/298004/af56e764-21ad-7c6e-c958-90929fa3ac76.png)

# ゲーム本体

https://games.imoimo.xyz/games/snake_game

# ソース

https://github.com/imoimo2009/snake_game

元記事を表示

EC2にPHP8.0をセットアップする

以前、EC2にPHP7.4をインストールする方法を投稿しましたが、今回はPHP8.0をインストールする方法のメモです。
EC2のインスタンスを立ち上げてからの手順をまとめておこうと思います。
(`Amazon Linux 2` へのインストール方法です。)

# インスタンスのアップデート
`yum update`を実行し、インスタンスをアップデートします。

“`common_lisp
$ sudo yum update
“`

# リポジトリの確認
以下のコマンドを実行し、リポジトリの状態を確認します。

“`common_lisp
$sudo amazon-linux-extras

0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \

元記事を表示

【PHPUnit】PHPUnit実行時、filter_input()からの戻り値がNullになるので組み込み関数でもMockを作ってテストする。

## な、なんだってー!?
PHP-CLIのSAPIだとfilter_input()を実行しても値がnullになりテストができない・・・

“`php
$_GET[‘key’] = ‘value’
var_dump($_GET[‘key’]);
// string(5) “value”

var_dump(filter_input(INPUT_GET, ‘key’));
// null
“`

というわけで組み込み関数でもMockを作ってテストしてみます。
この方法は他の組み込み関数でも使えるはずなので、ぜひ使ってみてください。

サンプルのコードはこんな感じ。

“`php:TargetService.php

元記事を表示

CentOSにおけるPHPのバージョンアップ方法(7.0→7.4)

## 概要
WordPress のバージョンを 4.9 から 6.0 に引き上げた際に PHP のバージョンも 7.0 から 7.4 へ引き上げる必要があったため、その内容を備忘録としてを残します。

## 環境
nginx : 1.12.2
PHP : 7.0.27 (引き上げ前)→7.4.30(引き上げ後)
CentOS : 7.4.1708

## 内容
まずは yum コマンドを使って PHP7.4 の remi リポジトリをインストールします。

“`
$ yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
“`

次に必要な PHP バージョンに対応する remi リポジトリがインストールされたことを確認します。

“`
$ ls -l /etc/yum.repos.d/
“`

一覧の中に「remi-php74.repo」があればインストールできています。

次にインストールしたリポジトリの中から 新しいバージョンの PHP を動作させるために必要なモジュールをインストール

元記事を表示

cron で /dev/null つけたら動かない?

### 現象

cron 起動の処理を下記のように出力を抑える設定にしたら、見た目上 動かなくなりました。

“`
* * * * * php /foo/bar/test.php (動く)

* * * * * php /foo/bar/test.php >/dev/null 2>&1 (動かない?)
“`

### 原因

実際は動いていたのですが、プログラム内の二重起動チェックですぐに終了していたからでした。

二重起動チェックの方法は `ps` コマンドを発行して、test.php の行数を数えてました。
通常は、

“`
362165 ? R 0:00 php /foo/bar/test.php
“`

この1行のみ出力されます。これは自分自身であり二重起動していないと判定して処理続行します。
しかし `/dev/null` をつけると、

“`
362162 ? Ss 0:00 /bin/sh -c php /foo/bar/test.php >/dev/null 2>&1
362165 ? R 0:00 php /foo/bar/test.php

元記事を表示

Dockerで構築したLaravelの開発環境にXdebugを導入する

新規プロジェクトにアサインされた際**ソースコードがどのように実行されているか**を迅速に把握することが必要となります。
ソースコードを1から読むことも必要ですが、デバッガを使用しどのように動いているかを把握することで、仕様理解が一気に進みます。

私は今までいくつかの案件で環境構築をさせていただく機会があり、その中でもXdebug導入で何度も躓くことがありました。
そういった経験から得られた知見をまとめ、今後詰まった時の参考にするためまとめます。

# 環境
– php 8
– Laravel 8
– Xdebug v3.1.5
– Visual Studio Code 1.71.2

# Xdebugのバージョンについて
今回はバージョン3をインストールする

Xdebug導入について検索するとバージョン2と3の情報がヒットするが、全く記法が異なるので注意
自分が導入したいバージョンをについて検索すること

バージョンによる記法の違いは以下を参照

https://marketplace.visualstudio.com/items?itemName=xdebug.php-debu

元記事を表示

Twitterツイート管理システム試作

# Twitterツイート管理システム試作
概要等は下記の記載をお読みください。ソースコードは[github](https://github.com/taoka-toshiaki/tweets-system-box1)で公開しております。
尚、今回の管理システムは簡易版です、このシステムにツイッター認証などのシステムを
導入すれば少数で運営には耐えるは可能かと思いますが、用途として個人で使用する目的で開発しました。

※スマホでも操作可能ですがパソコンで管理するように作っています。

# Twitter ツイート管理システム 概要
– まだ試作段階です。
– 商用利用可能です(連絡不要)。
– 主に自身が使用する時に必要としている機能だけを取り入れています。
– 機能
– 即時ツイート機能
– 予約ツイート機能
– 予約ツイート編集機能
– 予約ツイート削除機能
# 動作環境 php7.1 ~ php8.0
# 使用方法
– data/tw-config-v2.phpを設定後、index.phpをブラウザで開き使用する。
– cron

元記事を表示

php.iniを使ってエラー表示方法

php.iniはphpのファイル設定のことを指す。

エラーの表示方法はphpのファイルのデフォルト設定では
デフォルトの設定では「display_errors = Off」となっています。
こちらの記述を編集します。

これを、
「display_errors = On」
にします、

場所は「Applicants > MAMP > bin > php > php7.3.8 > conf」
の順に移動していきます。

ファイル内検索で、「display_errors」を検索すれば、手間が省けます。

デフォルトでは「display_errors = Off」となっているので、
 
設定を「On」に編集してファイルを保存します。

それも表示がうまくいかない場合は、PHPファイルに直接記述していきましょう。
“`javascript
//エラー表示

//エラーしない

“`

となります。

元記事を表示

Laravel8 Jetstream team版でOwner以外にチームメンバーのロール編集権限を持たせる

Laravel8 Jetstreamであれやこれや作っています。
今回はチーム内に管理者を置いて、共同管理ができるようにしたく、まずはロール変更が出きるようにしてみました。

### 条件
– Laravel8
– Jetstream team版導入済み
– 新規ユーザ登録時にチームIDは指定し、ロールはreaderを持たせている

### なんでこれが必用か
JetstreamのチームメンバーのロールはTeam Ownerしか変更できません。
そこで、editorにも編集権限を渡したいと思います。

### 参考にしたサイト

https://jetstream.laravel.com/2.x/features/teams.html#member-management

### ロールの確認

app/providers/JetstreamServiceProvider.php

editorに**update**があることを確認する。

“`php:JetstreamServiceProvider.php
Jetstream::role(‘editor’, ‘

元記事を表示

php
の改行がうまくいかない場合は??

CSSを確認する

元記事を表示

【PHP】元のDateTimeオブジェクトを変更せずに日付のmodifyを行いたい

## 概要
PHPの日付で計算した後の値取得を行うとなると、DateTimeのオブジェクトを作成した後に`modify`関数を呼ぶ方法が挙げられます。[[PHP] 日時の加算・減算をする(modify)](https://php.programmer-reference.com/php-datetime-modify/)の記事に、実装例があります。
ただ、注意点としてDateTimeのmodifyは破壊的なメソッドなので、modifyを呼び出した後に元のオブジェクトの値も変わってしまいます。元のDateTimeオブジェクトを変更せずに日付のmodifyを行いたい場合どうするか、というのを今回メモ書きします。

## 対応方針
modify後は新しいオブジェクトを使用したい場合、元のオブジェクトに変更を加えない`DateTimeImmutable`クラスが用意されているので、これを使えばやりたいことができそうです。DateTimeImmutableの概要については[【PHP】DateTimeクラス・DateTimeImmutableクラスのオブジェクトの違い](https://blog-

元記事を表示

AlmaLinux8のPHPを7.3/7.4/8.0/8.1/8.2系にバージョンアップする

# はじめに
AlmaLinux8でデフォルトでインストールできるPHPは、2022-10-04時点で“`PHP7.2系“`です。このほかにも7.x系のPHPや最近では8.x系のPHPも登場してきています。
ここでは、AlmaLinux8におけるPHPのバージョンアップ手順を備忘録としてまとめておきます。

# PHPのインストール元
ここでは、AlmaLinux8標準リポジトリ“`AlmaLinux 8 – AppStream“`ではなく、“`epel“`リポジトリ“`remi“`リポジトリを用います。たまに、PHPのモジュールが標準リポジトリでは提供されていない場合があり、これを吸収するために外部リポジトリを利用します

# アップデート手順
## 1. 外部リポジトリの追加
“`bash
# epelリポジトリを追加します
dnf -y install epel-release

# remiリポジトリを追加します
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

#

元記事を表示

PhpStormの便利機能

## 概要
最近未経験からエンジニアに転職したひよっこエンジニアです。
スキルアップのために、不定期で30分でインプットしたことをまとめて投稿していきます。
第一弾として本記事では、職場で使っている**PhpStormの便利機能・ショートカットキー**についてやっていこうと思います。

## PhpStorm便利機能3選
### 1. 検索系
#### 1-1. どこでも検索:「shift+shift」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680888/aafb7292-46e2-c59b-2e43-4de90eabe103.png)
※**ファイル名検索:「⌘+shift+o」**、**クラス名検索:「⌘+o」** もあるみたい。

#### 1-2. 複数ファイル内検索:「⌘+shift+f」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680888/68cf0e51-

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlのオブジェクト指向プログラミングの比較

Python JavaScript PHP Java Ruby

Qiita > プログラミング言語の比較

Python,Ruby,PHP,Java,JavaScript,Perlのオブジェクト指向プログラミングの比較

# Python

https://qiita.com/kaitolucifer/items/926ed9bc08426ad8e835

# Ruby

https://qiita.com/shogo-1988/items/e749208c0733bbe025c0

# PHP

https://qiita.com/mpyw/items/41230bec5c02142ae691

# Java

https://qiita.com/nao0725/items/aba8126c50bf85543c78

# JavaScript

https://qiita.com/shotets/items/e4b2ca36f5cbdc39

元記事を表示

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolutionエラーが出た

今まで問題なく立ち上がっていたDockerがなぜか立ち上がらない・・・
“`
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: select * from information_schema.tables where table_schema = テーブル名 and table_name = migrations and table_type = ‘BASE TABLE’)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:692
688▕ // If an exception occurs when attempting to run a query, we’ll format the error
689▕ // message to include the bindin

元記事を表示

【Qiita】10万Contributionいったので記録を色々と公開してみるよ

Contributionが10万行ってたので、せっかくだから投稿記事を分析してみたというものです。

本来他者には開示されないView数とかも出してるので一部の人には興味深い内容かもしれません。
知らんけど。
10万Contributionを狙っている方は参考にしてみてはいかがでしょう。

集計に使った値は2022/09/30あたりに取得したデータです。

# いいねランキング / Stockランキング

これは公式に用意されているので[ここ](https://qiita.com/search?sort=like&q=user%3Arana_kualu)見て。

# View数ランキング

よく見られた記事のランキングです。

| 順位 | View数 | 記事 |
| — | — | — |
| 1 | 243836 | [2017年のフロントエンドエンジニアならこの程度は知ってて当然だよな?](https://qiita.com/rana_kualu/items/cad8dbbe5f5a1f1b3ba1) |
| 2 | 190163 | [三項演算子をもっと使おう](h

元記事を表示

未経験転職一ヶ月目のしおり〜やったこと・良かったこと・困ったこと〜

# はじめに
はじめまして、Itoiと申します。
2022年9月に未経験エンジニアとして、今の会社に採用してもらいました。

本記事では、この一ヶ月で経験したことについてまとめてみました。

本稿で私ができた経験や感じたことは、あくまで私の主観です。
業務形態、周囲の人物の人柄、自身の知識などによって、経験も感じ方も大きく左右されると思います。
あくまで、筆者の目線から見た1ケースとしてお読みください。

#### 想定読者
– 未経験転職でどんな会社に行くか悩んでいる方
– 未経験転職で内定をもらい、いよいよ働き出すという方
– 未経験者を育てようとしている方

## 筆者・会社の概要
### 筆者
– 32歳、前職は事務の公務員
– 理系
– 中学生からPCを自作してITに強め
– プログラミング経験はゆるく2年(Ruby。AtCoderでB問題まではほぼ確実に解ける)
– フレームワーク(FW)、DB周りの知識はあまりない

### 会社
– コンサル会社
– 受託開発(社内開発)
– Webサイトの企画・設計・構築・運用業務
– 従業員数約50名
– エ

元記事を表示

XAMPP ローカル環境からGmailを送信する

## はじめに
前回予約フォームを作成しました。
今回はこのフォームに登録したあアドレスには予約完了、管理者のアドレスには受付完了のメールが届くようにします。

## Gmail側でアプリパスワードを取得する
使用するGmail側でアプリパスワードを発行します。
まずはGoogleアカウントの2段階認証を有効に設定されているか確認します。

[Googleのアカウントページ](https://myaccount.google.com/security)の「セキュリティ」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/829365/dfb2d7fa-a89c-4e8e-e981-79a02ff4214d.png)
「2段階認証プロセス」がオンになっていればパスワードの発行が可能です。
オンになっていない場合は[2段階認証の許可](https://support.google.com/accounts/answer/185839?hl=ja&co=GENIE.Platform%

元記事を表示

PHPのフックってなんぞ(フィルターフック編)

[前回の記事](https://qiita.com/nyopono/items/2f87fd5a7c3996250c92)の続きで今回はフィルターフックについてまとめていきます。

※参考記事
・[Web 制作リファレンス (+α)](https://www.webdesignleaves.com/pr/wp/wp_func_hook.html)
・[WordPress フィルターフックの使い方を理解する](https://shu-sait.com/wordpress-filter-hook-tukaikata/)

# フィルターフックとは
[こちらの記事](https://www.webdesignleaves.com/pr/wp/wp_func_hook.html)から抜粋

>WordPressの処理の途中で、出力する内容をカスタマイズしたい場合に使われる仕組み

例えばWordPressでブログを設営していたとして、記事タイトルの頭に「■」という記号をつけたくなったとします。
一つ一つに「■」を書き足していくのは非常に手間な

元記事を表示

会員向けのメール配信機能のショートコードを定義する。

カスタム投稿、「メール配信」が合ったとして、その投稿を会員向けにメール配信する場合、真っ先に思いつくのはadd_shortcodeによってそれぞれのユーザー情報を表示してメールを送信しようかと考えましたが、複数宛に送信したいので使えません。
なので投稿本文をstr_replaceで置換して上げて、returnで返すようにしてあげれば簡単に実装できます。
後はwp_mail等で送信します。

“`php:functions.php
function mail_shortcodes($user_id,$body){
$user_data = get_userdata($user_id);
$shortcodes = array(
‘nickname’ => get_user_meta($user_id,’nickname’,true),
‘user_email’ => $user_data->user_email,
);

$shortcd = array();
$replace = array();
foreach ($sh

元記事を表示

OTHERカテゴリの最新記事