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

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

[OCI]Oracle Autonomous Linux 7.9にOracle Instant Client 21c+SQL*Plus+Apache+PHP+php-oci8をセットアップしたときのメモ

rootユーザにスイッチ
“`
sudo su –
“`

Oracle Instant Client 21cとSQL*Plusをインストール
“`
yum install -y oracle-instantclient-release-el7
yum install -y oracle-instantclient-sqlplus
“`

環境変数の設定
“`
cat <<'EOL' >> /etc/profile
export ORACLE_HOME=/usr/lib/oracle/21/client64/lib
export NLS_LANG=Japanese_Japan.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
EOL
“`

Apache + PHP + php-oci8のインストール
“`
yum install -y oracle-php-release-el7
yum install -y php php-oci8-21c
“`

Apacheの.phpファイルのハンドラー

元記事を表示

ヒアドキュメント 「<<<」 PHP

## 用途
– 変数に複数行の文字列を代入する時に使う。

## 使用方法
“`php:例

// 結果
おはよう
こんにちは
こんばんわ
“`
– ヒアドキュメントを使う際には、`=` + `<<<` + `ID`の順で書く。 例ではABCがIDにあたる。 - IDからIDまでの文字列を代入する。 例ではABCからABCの間に書いてある文字列が代入される。 - IDはルール内であれば自由につけることができる。(ABCに意味はありません) ### 文字列の中で変数を使用する場合 ```php:例

// 結果
varの値はtrue
“`
– 変数を使用する際は、開始のIDをダブルクオートで囲う。
※シングルクオートだと変数名がそのまま表示される。

 
 
 
下記の記事を参考に執筆しました。
– https://www

元記事を表示

【メモ】XAMPPの同梱物確認とインストール

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

# XAMPPインストール

XAMPPのダウンロードサイトにアクセス
https://www.apachefriends.org/jp/download.html

### 何が含まれていますか?
![image.p//ng](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626978/e6ec66e6-4b6e-64ae-5440-b1e429c59479.png)

XAMPPに同梱されているものはこんな感じ↓
|ソフト名|バージョン|概要|
|—|—|—|
|Apache|2.4.53|Webサーバ|
|MariaDB|10.4.24|データベース管理システム|
|PHP|8.1.4|プログラミング言語|
|phpMyAdmin|5.1.3|MySQL/MariaDBをブラウザで管理するためのソフト|
|OpenSSL|1.1.1|暗号通信プロトコルSSLおよびTLSの機能を実装した、ライブラリ|
|XAMPP Control

元記事を表示

【備忘録】.phpから別の.phpを実行する

web開発初心者の備忘録です。
ガラパゴスでも自家消費用だからへーきへーき。
# ポイント
include関数とrequire関数を使用することで、外部の.phpを参照する事ができる。(.phpに限らずファイルなら何でも読み込める?未検証。)
それぞれの違いは以下の通り。
– include関数 → ファイルを読み込めなかった際、E_WARNINGを発生させるが、処理は強行する。
– require関数 → ファイルを読み込めなかった際、E_COMPILE_ERRORを発生させて、処理も止まる。

https://www.php.net/manual/ja/function.require.php
# ファイル構成
“`
IISでルートに設定しているフォルダ
 └ test
   ├ main.html
   ├ main.php
   ├ lib.php
   ├ main.js
   └ jquery-3.6.0.js
“`
# ソースコード
### main.html
“`html


元記事を表示

EC2上のLaravelプロジェクトでmbstringが使えない

# エラー内容
EC2上にデプロイしたらパスワード変更メール送信時に以下のエラーが出た。
“`
Call to undefined function mb_strcut()
“`

# 原因
ローカルで開発していた時にはデフォルトでmbstringがインストールされていたが、EC2上ではmbstringをインストールしないといけないらしい。

# 対策
①php-mbstringをインストール
②php.iniを編集
③php-fpmを再起動

### ①php-mbstringをインストール
“`
sudo yum install php-mbstring
“`

### ②php.iniを編集
php.iniは記述量が多いので/mbstringで探す。
“`/etc/php.ini
;mbstring.language = Japanese

mbstring.language = Japanese

;mbstring.internal_encoding =

mbstring.internal_encoding = UTF-8

;mbstring.http_i

元記事を表示

PHPのパスを変更

# バージョンを確認
PHPのバージョンを確認するには

“`php
taro@MacBook-Pro % php -v
PHP 8.1.4 (cli) (built: Mar 18 2022 09:46:02) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.4, Copyright (c) Zend Technologies
with Zend OPcache v8.1.4, Copyright (c), by Zend Technologies
“`

使用する PHP を確認するには

“`php
taro@MacBook-Pro ~ % which php
/usr/local/bin/php
“`

# .bash_profile の変更
MAMPのPHP にパスを通すには、次のコマンドを実行するみたいです。

“`
$ export PATH=/Applications/MAMP/bin/php/php*.*.*/bin:$PATH
“`
1点注意点で “`*.*.*“` は使用するバージョン番

元記事を表示

PHP、Laravelのbladeファイルの中でプルダウン形式を使用した

select文の中にif文を記述して、
プルダウン形式を記述したときの内容をまとめます。

行いたい処理。
3種類の会員(無料会員 id=1、トライアル会員 id =2、プラミアム会員 id=4)
がコントーローラーから配列渡せれてきて、
プルダウン方式で選択し更新できるようにしたい。

結果のコード。

“`show.blade.php

@if ($user[‘user_type’] == 1)
元記事を表示

[php] filter_input って便利

# filter_input 使ってみた

PHP5系で書かれたコードってPHP8にすると結構、変数の未定義や値が空って事でエラー出ちゃいますよね。

こんな時、`isset` の様なチェックをしてくれて、更にバリデーションも行ってくれる `filter_input` は超便利。

今回、PHP5.6で動いてたツールのコードを PHP8で動く様にして欲しいと頼まれました。

まぁ何年も前に書かれた様で、こんな感じ↓

“`
$flg = $_GET[“flg”];
$status = (!isset($flg) && $flg == ”) ? 0 : $flg;

if ($status !== 0) {
何かの処理;
}
“`

当然、PHP8になると `$_GET[“flg”]` が空だと、そんなキーはない!と怒られますよね。

“`
Warning: Undefined array key “flg” in Your Path
“`

エラー回避する為には、`$_GET[“flg”]` に値が入ってるか `isset` したり、値のチェックしたりと少々面倒。

元記事を表示

PHPのcomposer,オートロード(autoload),名前空間(namespace)について

# composerとは
***PHPのライブラリを管理するツール***です。
これを使うことによって別のファイルを読み込む時に***オートロード(自動クラス読み込み)***してくれる
便利なツールです。

詳しい説明は下の記事にあります。
https://qiita.com/atwata/items/d6f1cf95ce96ebe58010

# composerの導入
composerは公式サイトからダウンロードができます。
Macの場合は

“`
$ brew install composer
“`
でインストールできます。とは言っても公式サイトは見る習慣は大事だと思います。

下の写真は2022/4/22現在

![スクリーンショット 2022-04-12 11.22.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1748789/e3eac3e8-84bc-f356-0365-26b8d386ff48.png)

上記のコマンドを実行した後に、lsコマンドでターミナルで確認する

元記事を表示

Laravel環境にPHP-CodeSnifferを導入する

# 概要

– Laravel環境にてPHP-CodeSnifferを導入する方法をメモ的にまとめる。

# 詳細

– PHP-CodeSnifferにてPSR-12に準拠しているかどうかチェックする。
– 筆者はDocker環境でPHP-CodeSnifferを導入する。
– `/var/www/html`直下に直接laravelの構成ファイル(.envやconfigディレクトリ、appディレクトリ等が存在しているものとする。)

# 方法

1. PHPのコンテナにログインしてドキュメントルートまで移動する。
1. 下記コマンドを実行して当該のライブラリをインストールする。(ローカル環境にのみ入れたいので `–dev`オプション付与)

“`terminal
$ composer require –dev squizlabs/php_codesniffer
“`

1. 下記コマンドを実行して使用する事のできるコーディング規約を確認する。

“`terminal
$ /var/www/html/vendor/bin/php

元記事を表示

【PHP】数値じゃない要素にintvalをかけるとエラーが出ると思っていた

こういう処理を書いた時、数値じゃない文字は整数に出来ないからエラーを吐くんじゃないかと思ってたんですが、

“`php:
$hoge = [‘あ’,’い’,’う’];
$huga = null;
try {
$huga = array_map(‘intval’, $hoge);
} catch (\Throwable $exception) {
dd($exception);
}
dd($huga);
“`

出力結果、エラーになりませんでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282328/50e09e3f-d197-8997-90ca-ce40a24716e1.png)

[PHP公式ドキュメント:intval](https://www.php.net/manual/ja/function.intval.php)
> 成功時は value の整数値、失敗時は 0。 空の配列の場合は 0、空でない配列の場合は 1 を返します。

#
数値以外の文字列が入っ

元記事を表示

PHPerKaigi 2022 PHPerチャンレンジ問題解説

## はじめに

[PHPerKaigi](https://phperkaigi.jp/2022/)とは
>PHPerによるPHPerのためのお祭り

[参加記事はこちら。](https://qiita.com/yamamoto_hiroya/items/da8189c74e3dab0fdba0)

## PHPerチャンレンジ

開催期間中に公式ページ、スポンサーブログ、会場、twitterなどにシャープから始まる文字列が記載されており、それを探し出して専用のフォームに投稿して点数を稼いで準備を競うゲームです。
過去にも開催していて大変盛り上がりました。
僕も過去に参加したことがありましてその時の[記事はこちらです。](https://qiita.com/yamamoto_hiroya/items/d60846f1837e94d059d9)

今年は健闘し4位まで上がることができました!

![スクリーンショット 2022-04-11 18.51.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6

元記事を表示

PHPのexec関数でエラーメッセージを取得する

PHPの[exec関数](https://www.php.net/manual/en/function.exec.php)では返り値や引数でコマンドの出力を取得できるが、エラーは取得できない。
“`php
// 存在しないディレクトリをlsする.
// $resultと$outputともに空
$result = exec(‘ls my-directory’, $output);
“`
なぜかというと、**execコマンドで拾えるのは標準出力からの出力のみ**で、エラーの場合たいてい標準エラー出力からの出力になるため。エラーを拾うには最後に`2>&1`をつけて標準エラー出力の内容を標準出力にリダイレクトする。
“`php
$result = exec(‘ls my-directory 2>&1’, $output);
“`
“`
// $result
“ls: cannot access ‘my-directory’: No such file or directory”

// $output
[
“ls: cannot access ‘my-directory’:

元記事を表示

【備忘録】文字列の中の変数展開について

## はじめに
変数展開について理解を深めたい。
シングルコーテーションとダブルコーテーションの違いを全く理解していなかったので、
備忘録を兼ねてまとめていく

## 変数展開とは
PHPにおける文字列の変数展開とは、文中における変数の値出力のこと。

## ダブルクオートを使った文字列展開
ダブルクオートを使うことによって、文字列の中で変数を展開することができる。
“`

元記事を表示

PHPで乱数の生成

PHPで乱数の生成の備忘録

PHPで乱数を生成するひつようがあったので自分用にまとめです。
mt_rand()で生成できる知識があったので、使い方を見ようと調べました。
詳しく書くのもあるですが自分用なので簡単にまとめます。

mt_rand()じゃなくてrandam_int()

調べているとmt_rand()よりrandam_int()の方がセキュリティが高いらしいのでmt_int()を使っていきます。

“`
$number = random_int(0, 2); //0から2の間の数で乱数生成し$numberに格納
echo $number;                           //0から2の値のどれかが入っている$numberを出力
“`

最後に

簡単でしたね。これからも勉強内容を忘れないためにqiitaに残していきたいと思います。

元記事を表示

【メモ】Laravel開発環境の必要物を学ぶ

web系のサーバーサイドエンジニアを目指す奴のメモ書きです。

Laravelの開発環境を構築をしたいので何が必要かを調べる。

開発環境構築ので必要なのは
・XAMPPインストール
・Composerインストール→Laravelインストール

# XAMPPとは
XAMPPは頭文字をとってる。
「X」:様々なOSに対応する「クラスプラットフォーム」を意味する「X」を使用
「A」:Webサーバソフトウェアの「Apache」の頭文字を使用
「M」:データベース管理システムの「Maria DB」の頭文字を使用
「P」:アプリ開発で多く使われるプログラミング言語の「PHP」の頭文字を使用
「P」:アプリ開発で多く使われるプログラミング言語の「Perl」の頭文字を使用

### XAMPPのメリット
PHP開発環境構築 = XAMPP これが過言ではない
WebサーバーやDB、PHPを個別にインストールしなくてもXAMPPをインストールすればすべてそろうので超らくちん。XAMPPだけあれば開発できる。さらに便利にしたい場合、これに加えてLaravelとかのフレームワークをインストールする。
W

元記事を表示

2022年に開催される全国のPHPカンファレンスのまとめ

# 2022年に開催される全国のPHPカンファレンスのまとめ

## [PHPerKaigi 2022](https://phperkaigi.jp/2022/)
– 開催日 : 2020年4月9日(土)~4月11日(月)
– 開催場所 : 練馬区立区民・産業プラザ Coconeriホール・ニコニコ生放送(ハイブリッド開催)
– Twitter : https://twitter.com/phperkaigi
– ハッシュタグ : [#phperkaigi](https://twitter.com/hashtag/phperkaigi?src=hash)

## [PHPカンファレンス沖縄 2022](https://phpcon.okinawa.jp/)
– 開催日 : 2022年7月予定
– 開催場所 : 沖縄県内の会場で調整中
– Twitter : https://twitter.com/phpcon_okinawa

## [PHP Conference Japan 2022](https://phpcon.php.gr.jp/2022/)
– 開催日 : 2022年9

元記事を表示

WordPress 始めた時に読む

### WordPressの基本
* WP(WPテーマ)は**index.php**と**style.css**があれば動作する

### WordPressの構成
例)
* トップページ(index.php)
* 固定ページ(page.php)
* ヘッダー(header.php)
* フッター(footer.php)
* アーカイブ(archive.php)※アーカイブは記事一覧ページの事
* 個別投稿(single.php)
* サイドバー(sidegar.php)
上記の様に役割によってファイルを分けて作成する。

### テーマファイル(大きく2種類ある)
#### テーマテンプレート
コンテンツに応じた表示を受け持つ
page.php, archive.php, single.php等

#### モジュールテンプレート
ヘッダー用、サイドバー用等、Webページの一部を担う
header.php, sidebar.php, footer.php等

#### 二つの違い
呼び出し方が違う。
テーマテンプレートはURLでWPが自動で呼び出す。
モジュールテンプレートはテーマテ

元記事を表示

WordPressの記事の見出しを正規化する

### 見出しってよくわかってない?

なんとなく、昔からある とか

とりあえず、<h1>が最初の見出しだな、とか
CMSで書いているとおかしくなるので、
正規化できるようにしました。

:::note info
この記事も、わざと見出しがわかってないフリして記述しています。
:::

# 対象

– HTMLの見出しの仕組みをよくわかってない社員や記事執筆者がいる方へ
– 自作テーマを使用中

## 最適化をする

ここにおいては、最大の見出しレベルは <h3> と仮定して
<h1> もしくは <h2> レベルのを強制的に <h3> にして
それ以下のレベルの見出しも適切に置換する非常に単純な記述です

ここでは、サイトのタイトルを <h1>、記事のタイトルを <h2> で既に使用してしまってる場合を想定しています。

“`single.php

Laravel(7.x) Database:seeding 個人的まとめ

## 基本的なシーダーファイル作成コマンド
“`php
php artisan make:seeder UserSeeder
“`

## ファクトリーを使用する
50人分ユーザーを作成し、それぞれにリレーションをアタッチします。
“`php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\User::class, 50)->create()->each(function ($user) {
$user->posts()->save(factory(App\Post::class)->make());
});
}
“`

## 追加のシーダーを呼び出す
簡潔に書けて、簡単に呼び出せます。
“`php
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call([
UserS