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

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

[PHP] XAMPPのPHPエラーログを出力する(時刻付き)

#1.ログフォルダを作成する
C:\xampp\php\logs\配下に”php_error.log”を作成します。

#2.php.iniファイルを開く
C:\xampp\php\ 配下にあるphp.iniファイルを開きます。

#3.以下の設定を変更する。
**・log_errors=On**
 →もしOffの設定がされている場合、Onにします。
**・error_log = php_errors.log**
 →php_error.logのコメントがされている場合コメントを外します。

**・タイムゾーンを東京にする**
;date.timezone=Europe/Berlin
date.timezone=Asia/Tokyo
 →ログに時刻を表示する場合、上記の設定にします。

#4.xamppを再起動する。
xamppよりapacheを再起動します。


#テストプログラムで確認する。

以下のtest.phpをC:\xampp\htdocs配下に作成します。
そしてhttp://localhost/test.php にアクセスします。

~~~php
[test.ph

元記事を表示

Laravel8でLINEログインを実装する

# はじめに
Laravel8でLINEログインの実装を行ったので備忘録として残しておきます。

# 環境
PHP 7.4.27
Laravel 8.78.1

#事前準備
LINEログインの機能を使用するには[LINE Developersコンソール](https://developers.line.biz/console/)でプロバイダー及びLINEログインのチャネルを作成しておく必要があります。

下記のドキュメントを参考に作成していきますが詳細は割愛します。

https://developers.line.biz/ja/docs/line-login/getting-started/

チャネルを作成することでチャネルID、チャネルシークレットを取得できます。
コールバックURLも忘れずに設定しておきましょう。

#実装
LINEログインの実装部分に焦点を当てているためLaravelプロジェクトの作成や通常のログインなどの認証関連のパッケージの導入は省略しています。

### Laravel Socialiteをインストール
今回はLaravelの公式パッケージであるLara

元記事を表示

PHPのビルトイン関数

#本記事の概要
本記事は筆者の備忘録的な位置付けで作成したものとなっております。
私でもわかるよう丁寧に(独特な)表現になっておりますことご了承ください。
また、以下のサイトで気軽に関数を試すこともできますので、ぜひ試しながら遊んでみてください。
https://paiza.io/projects/mL8PaRyCwNERG3TGBOTwAQ

#phpとは
html,cssなどで作成する静的webページと異なり、`動的なwebページを作成する`ことができる。
動的なWebページとはアクセスしたタイミングや状況によって表示内容が変わるページ。
JavaScriptがクライアント側の処理をするのと異なり、webサーバー側の処理をすることができる。
#ビルトイン関数とは
phpに用意されている関数。
これとは他に、自身で定義することができるユーザー定義関数がある。

# 公式サイト
php.netで確認できる。
英語で出てくるので、調べる際は`文字列 関数 site:php.net`と調べると日本語で出てくるのでおすすめ。

#関数

|目的|関数|注意点|
|—|—|—|
|

元記事を表示

PHPExcelを動かしてみた

後継のPHPSpreadsheetの登場により、すでにメンテナンス対象外で、アーカイブされているPHPExcel。
ですが、PHPの動作環境上やむを得ず使用することになり、試しに動かしてみたので、覚え書きしておきます。

## 環境

* OS: Amazon Linux2
* PHP: 5.4.16

→ 本記事では、EC2インスタンスは準備済を想定。PHPのインストールから行います

## 事前準備

EC2インスタンスにSSH接続して、以下を実行。

### PHP5系のインストール

[Remi’s RPM repository – Configuration wizard | rpms.remirepo.net](https://rpms.remirepo.net/wizard/)
にアクセスして、以下の通り設定。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/9b928c90-5fea-0fe4-da6c-9a4f33325aa1.png)

PHPのバー

元記事を表示

-bash: php: command not found 解決方法

##初めに
作成中のポートフォリオでPHPのバージョンを確認したいと思い、`php -v`をターミナルで叩いたところ、`-bash: php: command not found`と表示されてバージョン確認できなかったので、その解決方法についてご紹介していきます。

##エラー原因
“`
アプリディレクトリ $ php -v
-bash: php: command not found
“`
`-bash: php: command not found`で「そんなコマンド無いよ!」と指摘された時は、パスが通ってないことが原因です。
なので、`.bash_profile`ファイルにパスを通す設定をしてあげることで解決できます!

##1.パスを通す

###`.bash_profile`の確認
先ずそもそも自身のホームディレクトリに`.bash_profile`が存在しているのか確認してみます。

“`
アプリディレクトリ $ cd #ホームディレクトリに戻る

ホームディレクトリ $ ls #ホームディレクトリ下に配置されているファイルを確認
Applications OneD

元記事を表示

【正規表現】PHPで郵便番号をIF文で条件定義

“`php:test.php

“`

説明

①preg_match — 正規表現によるマッチングを行う
https://www.php.net/manual/ja/function.preg-match.php

②/\A ←ここまでの意味・・・文字列の先頭を意味します。

③\d{3} ←これの意味・・・「d」が数字指定、{3}数。数字で3文字入力しなさい。

④[-] ←これの意味・・・郵便番号のハイフンです。ハイフン無し入力をユーザーにした正規表現を記述したい場合はこれは不要です。

⑤\d{4} ←これの意味・・・「d」が数字指定、{4}数。数字で4文字入力しなさい。

⑥\z/ ←これの意味・・・文字列の末尾を意味します。

“`php:test.php

元記事を表示

PHPExcelとPhpSpreadsheetの比較

PHPでのExcel操作に関し、PHPExcelとPhpSpreadsheetを比較したので覚え書き。

## 概要

### 共通点

– いずれも[PHPOffice](https://github.com/PHPOffice)シリーズのひとつ
– スプレッドシートファイルフォーマットの読み込み/書き込みができるライブラリ

### [PHPExcel](https://github.com/PHPOffice/PHPExcel)

– 2015年に最終バージョン1.8.1をリリースした後、2017年非推奨 → 2019年にアーカイブされた

### [PhpSpreadsheet](https://github.com/PHPOffice/PhpSpreadsheet)

– PHPExcelの後継で、互換性はなく、品質がよくなっている
– 名前にSpreadsheetとあるが、Excelファイルの操作も可能

## 比較

表でその違いを比較してみました。

| | PHPExcel | PhpSpreadsheet |
| —- | —- | —- |
|

元記事を表示

【PHP】 publicやprivateやアクセス修飾子ってなんぞや?疑問を解消してくれる記事

使い分ける際の判断基準を簡潔に。

①値を変えたらだめなもの
②値を変えてもOKなもの

クラス(class)とは、言わば『設計書』。
繰り返し使う処理をまとめたものです。

内部的に使う処理は「private」にして値を固定にして、外部からは変更できないようにします。
(店で売っている商品の価格を消費者は自由に変えられない。)

外部的に変更したい処理は「public」にして値を変動できるようにして、外部から変更できるようにします。
(寿司の価格はprivateだけど、「刺身醤油とわさび」は自由に持って帰ってイイよ。個数は消費者に委ねるよ。って状態にする)

Publicとは?

クラス内外問わず、どこからでもアクセス可能

purotectedとは?

そのクラスと子クラス(継承先のクラス)からのみアクセス可能

privateとは?

そのクラス内でのみアクセス可能

元記事を表示

WSL2(Ubuntu)でPHP + Apache環境を構築する②

WSL2(Ubuntu)を使用して、Windows上にLinuxの仮想環境を構築し、PHP + Apacheの開発環境を整えます。
本稿は2部構成となっております。WSL2・Ubuntuのインストールは第1部で解説していますので、未読の方はこちらからお読みください。

https://qiita.com/Michi1090/items/2ff58970fd95c0b366c7

# VScodeのインストール

##拡張機能のインストール

まず、**Windows側**でVScodeを開きます。
Marketplaceで`Remoto Development`と検索し、該当の拡張機能をインストールします。これは簡単に言うと、WSL上でVScodeを使用できるようにするための機能です。
![2022-01-18 (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485055/d13f74f1-c342-4098-7a0e-174b10729541.png)
インストールできたら、VScodeを閉

元記事を表示

VirtualBox+CentOS7+Apach2.4+PHP8.0+MySQL8.0 の開発環境構築をする

# はじめに
この記事ではVirtualBoxを使用して、LAMP環境(Linux,Apache,PHP,MySql)を構築します。

VirtualBoxを使用した、CentOSの環境構築については以下の記事を参考にしてください。
[VirtualBox(Windows10)にCentOS7環境を構築し、TeraTermでssh接続をする](https://qiita.com/fumo_fumo/items/c079d688e33a9752398c)

# 環境
– VirtualBox:6.0
– ホストOS:Windows10
– ゲストOS:CentOS 7.9
– Apache:2.4.6
– PHP:8.0.15
– Mysql:8.0.27

# 1.初期設定
全パッケージのバージョンを最新のものに更新する。

“`
# yum -y update
“`
SELinuxを無効にし、設定を反映させるために再起動する。

“`
# vi /etc/selinux/config
SELINUX=disabled

# reboot
“`
# 2.Apacheのインストー

元記事を表示

IntelliJ IDEAのPHP x Dockerプロジェクト設定

## この記事の概要

IntelliJ IDEAでPHP x Dockerプロジェクトを作成した時のメモ。

## この記事で触れないこと

それぞれについての詳細。(IntelliJ IDEA、PHP、Docker)

## 環境

– Windows 10 Pro 21H1
– Docker Desktop 4.4.3
– IntelliJ IDEA 2021.3.1
– PHP 8.0

## 環境構築

### 1. IntelliJ IDEAをインストール

[ダウンロード IntelliJ IDEA](https://www.jetbrains.com/ja-jp/idea/download/)

**Ultimate版**をインストールする。
後述のPHPプラグインはUltimate版しかサポートしておらず、Community版では使用できないらしい。

:::note warn
30日間の無料体験か、購入しての利用になる。
:::

### 2. プラグインをインストール

PHP x Dockerプロジェクトに必要なプラグインをインストールする。

– PHP

元記事を表示

Laravelのリレーションごちゃごちゃになりがちな件

## どういうことか

laravelのリレーション、migrateファイルに書くだけならそこまで難しいことはないけど、
実際にmodelやbladeでhasOneとか使ってそれらしく書こうとすると
結構ごちゃごちゃになりがち(私だけかもしれないが)

Laravelのドキュメントは丁寧で分かりやすいが
実際のDBが載せられていないからちょっとイメージしづらくて、
「あれこれどっち何を書いたら?」ってなってしまったので、
実際の実装例を載せながら、備忘録として残しておく。

## 環境

laravel 8.17.0
mysql

## 前提

以下のような2つのテーブルがある。

**アイドル名テーブル**

アイドルの名前と、そのイメージ写真のファイル名が格納されたテーブル。
本来はいろいろな情報が格納されているがここは一旦分かりやすさ重視で簡略化。

| id | name | age | img_path |
|:———–:|————|————|————|
| 1| アイドルA| 19| a.png|
| 2| アイ

元記事を表示

EC-CUBE+Docker+xdebug+VSCode環境を作る

EC-CUBE4の解析を行うのが難しいのでデバッグ機能を実装してみた。多分、EC-CUBEに限らず、Docker/VSCodeで開発してる人は参考になると思う。

:::note info
Windows環境でやるていで記載していきます。
:::

<参考>
[・Docker+EC-CUBEの環境を構築する](https://qiita.com/Kouhei-Ichikawa-wq/items/3212094e57a9fc8d53dc)
[・VSCodeからDockerにつなぐ](https://qiita.com/Kouhei-Ichikawa-wq/items/d43c2cbc098072bab25e)

#手順
適当な場所にフォルダを作成する(日本語が入ってないところがいいかも)
(例)C:\temp配下に『aaa』というフォルダを作成する

####コマンドプロンプト作業

“`:適当に作成したフォルダに移動する
cd C:\temp\aaa
“`

“`:EC-CUBEを落とす
git clone -b 4.0.5 https://github.com/EC-CUBE/

元記事を表示

新規または変更したファイルのみphpStanを実行する

## 使いそうなシチュエーション
・静的解析したいファイルが多すぎるとき
・将来phpStanを導入したいと考えているとき
・新規作成ファイルなど部分的にphpStanのレベルを上げたいとき

## コマンド
“`shell
# git diffした内容をphpstanで実行する
git diff master –name-only | grep ‘.php’ | xargs vendor/bin/phpstan analyse -l max

# diff-filterオプションで新規作成ファイルのみに絞り込みして実行できる
git diff master –diff-filter=A –name-only | grep ‘.php’ | xargs vendor/bin/phpstan analyse -l max
“`

エイリアスを通しとくと便利そう

“`shell
# ~/.bashrc または ~/.zshrc
alias stan-diff=”git diff master –name-only | grep ‘.php’ | xargs vendor/

元記事を表示

docker-compose を用いて M1 Mac 等 ARM 系 CPU で動作する Apache, MariaDB, PHP の開発環境構築

# 目的

M1 Mac で PHP, MySQL もしくは MariaDB が動作する開発環境を作成する。
但し下記を満たすこと。
1. Mac 環境を汚さないように仮想環境を用いる
2. 動作速度が許容範囲内

# 結果

試行錯誤の結果、仮想マシン環境ソフトウェア Parallels Desktop で Fedora 35 Server の仮想環境を構築し、https://github.com/kotanbo/docker-lamp-for-arm を docker-compose で起動するようにした。

理想としては Docker Desktop で構築したかったが、動作速度が遅く許容できなかったため、Linux の仮想環境内で Docker を利用することとした。

当初は MySQL で構築していたが、ある程度大きいダンプファイルをインポートすると下記エラーとなって落ちるので MariaDB を選択した。

“`text
2022-01-16T03:04:41.549704+09:00 0 [ERROR] [MY-013183] [InnoDB] Assertion f

元記事を表示

VaccImageのバイアル計算について

VaccImageについては、

[VaccImage](https://github.com/YohYasushi/VaccImage “VaccImage”)

に記載のとおりです。
ワクチンのバイアル管理を目的としたWebアプリです。Ver1.0.1までは本当にひどいスパゲッティCodeだったんですが、Ver2.0.0ではSQLを駆使し、随分と見通しがよいCodeになりました。
今回はVaccImageについて初回のQiita投稿ということで、バイアル計算について取り上げてみます。

他の先生方がどうしているか知りたいのですが、

元記事を表示

QRコード生成システム作ってみた

下記のライブラリでQRコードを作ってDLできるシステムをphpで作ってみました。
[https://packagist.org/packages/endroid/qr-code](https://packagist.org/packages/endroid/qr-code)

## 準備
最初にcomposerをインストールします。
成功すると、こんな画面が出ました。
![スクリーンショット 2022-01-21 17.33.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641189/7b415724-1c07-7c3a-e793-d2933f27b4da.png)
次はcomposerでendroid/qr-code をインストールします。
こちらもインストール出来たら下記の文面が出ました。
![スクリーンショット 2022-01-21 17.51.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641189

元記事を表示

[Laravel]ポリモーフィックリレーション

# [Laravel]ポリモーフィックリレーション
## とは???
超端的に言うと複数テーブルと紐付けることが出来るリレーション
## 経緯
PL「この設計は多対1のポリモーフィックを表していると思うので、設計とそれに伴った実装修正しておいて。」
自分「確かにそうですよね!(は???ポリモーフィックとはなんぞや???)」
ということで何もわからない状態から1日かけてマイグレーション、モデル、取得、作成処理を書き直しました。
このあたり公式ドキュメントも意外と詳しく書いてくれていなくて、中々苦労したので備忘録とします。
## 実装方法
### テーブル定義

| users|
| —- |
| id |

| admin_users |
| —- |
| id |

| comments |
| —- |
| id |
| user_id |
| admin_user_id |

みたいな感じでusersとadmin_userとcommentsテーブルがあるとします。
この際ユーザーも管理者もコメントをかくことが出来るとします。
commentsテーブルのu

元記事を表示

【laravel】ルーティングを別のファイルに定義したい!

# 概要
laravelで開発を行なっている人であれば、
普段から`web.php`や`api.php`などのルーティング定義ファイルを触ったことがあるかと思います。
皆さんはルーティング定義を`web.php`に定義していますか?
それとも別のファイルに定義していますか?
この記事は`web.php`以外のファイルにルーティングを定義をする為の手順をまとめたものになります。

# 事前知識
知らなくても実装できますが、知ってた方が良さそうなこと。

https://readouble.com/laravel/8.x/ja/providers.html

https://readouble.com/laravel/8.x/ja/lifecycle.html

https://readouble.com/laravel/8.x/ja/routing.html

# 手順
1. ルーティングを定義したいファイルを作成
2. サービスプロバイダを作成 or 既存のサービスプロバイダを編集
3. 作成した場合はapp.phpに登録

# ルーティングを定義したいファイルの作成
`test.p

元記事を表示

PHPとjs 記法の違い

変数や配列の宣言・追加などの書き方を
PHPとjsで混同してしまうことがあったのでメモ。

※※記事を書いている途中で完璧なサイト様を見つけてしまいました※※
当記事は無視してこちらを参照されたほうが良いと思います↓

【PHP】PHP及びJavaScriptにおける配列と連想配列、オブジェクトの取り扱い【JavaScript】

##変数の宣言

“`php:phpの場合
$変数名 = “hoge”;
“`

“`javascript:jsの場合
let 変数名 = “hoge”;
//定数の場合は const
“`

##配列の宣言・配列への追加

“`php:phpの場合
//宣言方法1
$変数名 = array(‘悟空’,’ピッコロ’,’亀仙人’);

//宣言方法2
$変数名 = [‘悟空’,’ピッコロ’,’亀仙人’];

//追加方法1
array_push($変数名,’クリリン’);

//追加方法2
$変数名[] = ‘クリリン’;
“`

“`javascript:jsの場合
//宣言方法1
let 変数名 = new Array(‘悟空’,’ピッコロ’,’亀仙人’);

元記事を表示

OTHERカテゴリの最新記事