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

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

macOS Monterey バンドルApacheでPHPを使う(PHP-FPM編)

これまでlocalhostで `.php` のファイルを扱っていたけれど、Montereyにしたらブラウザからアクセスしたときにソースが表示されてしまうようになってしまった、という人向けです。

おそらく一番楽であろう、標準で入っているApache + php-fpmを使う方法をご紹介。mod_phpは使いません。

##バンドルされなくなったPHPをインストール
Homebrewからインストールする場合。

“`sh
brew install php
“`
もしHomebrew未導入であれば、https://brew.sh に書いてあるようにして導入してから上記コマンドたたいてください。

“`sh
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

なおFPM使うには `–enable-fpm` を付けてビルドせよと書いてありますが、普通に `brew install php` すればついてきます。

##PHP-FPM

元記事を表示

確認用ログ

“`php
takumikondo@kondoutakuminoMacBook-Pro lara-d % git push origin HEAD
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 411 bytes | 411.00 KiB/s, done.
Total 4 (delta 2), reused 1 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/quest-academia/laravel-posts-training.git

元記事を表示

高機能クレヨンしんちゃん(Vue・PHP)

### Respect for

https://qiita.com/noppefoxwolf/items/b4376392d98cea2446dd

小一時間暇だったので自動ルビ振り機能とかを搭載したクレしんタイトルコールジェネレーターを作ってみたゾ

**https://tools.ic731.net/kureshin/**

## 使い方
アクセスしてテキストボックスに上段と下段に表示したいテキストを入力するゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/fae09185-5d1a-d2b1-1e8a-79babe5bd245.png)
あとは自動でルビ振りされたテキストがタイトルコール風に表示されるゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/722c2209-b3b2-527e-fc8b-88a25cd194af.png)

### 仕組み
もう

元記事を表示

8:インデントの除去, NULL, 配列

インデントの除去

前回(その7)のヒアドキュメントでは、終了文字列のインデント位置によって、先頭部分の空白が除去される。

下の例だと「$msg」の真下にある空白部分は全て除去される。

“`
$msg = << “Let’s start, everyone!!”
EOD;
“`

よって、終了文字列よりもインデントが少ない行は不可。

“`

$msg = << “Let’s start, everyone!!”
EOD;
“`

上の例では(不正なインデント階層(少なくとも2個のインデントが必要))のようなエラーとなる。

ヌル(null)

ヌル型は、ある変数が値を持た

元記事を表示

入力フォームのinputの値が、配列形式の場合にカンマ区切りでDB登録。

#はじめに
実務で、複数選択可能な入力フォームの値をDBにカンマ区切りで登録する場面があったので自分用のメモとして残します。

入力フォームで業種タイプが医療、ITサービス、ペット販売という風に複数選択されており
name属性がindustryで、inputのvalueが配列形式で下記のようになっている場合

“`php
all();

//現状、$request->get(‘industry’)の値は、array(0 => 1, 1 => 2, 2 => 3)という状態
if (!empty($request->get(‘industry’))) {
$str_industry = implode(“,”, $params[‘indsutry’]); //配列の中の各値を、一つずつカンマ区切りに修正する。
$params[‘indsutry’] = $str_industry; //登録対象の値を、カンマ区切りにした値に書き換える。
} else {
$params[‘indsutry’] = ”;
}

元記事を表示

複数画像アップロード/アップロード先の指定(PHP)

# はじめに
複数画像を指定のディレクトリにアップロードしたいシーンがあったので、忘れないようにここにまとめます。

# 実装

“`html:index.html



“`

“`php:upload.php
foreach ($_FILES[“files”][“error”] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES[“files”][“tmp_name”][$key];
$name = basename($_FILES[“files”][“name”][$key]);
$upload_path = “./

元記事を表示

isDirtyメソッドを使用して、変更されている項目があれば更新保存処理を行う。

入力フォームから入力された値と、取得したモデルの値で、差異がある項目だけ保存する処理を行いたい場合は、LaravelのisDirtyメソッドという便利なものがある。

参考ドキュメント
https://readouble.com/laravel/8.x/ja/eloquent.html

参考ソースコード

“`php
all(); //入力フォームで入力された値を$paramsという変数に格納。

$update_target = Target::find($request->target->id); //更新対象のオブジェクトをユニークなidで取得

foreach ($params as $key => $value) {
$update_target->$key = $value; //更新対象のオブジェクトの各フィールドの値を、入力された値に書き換えようとしている。
}

if ($update_target->isDirty()) {
$update_target->save(); //更新対象のオ

元記事を表示

PHP【クラス入門】Laravelを学ぶ前に見ると良い動画集

# フレームワークを学ぶ前に見ると良い動画として用意

:::note info
PHPのクラス「クラス・アクセス修飾子・継承・静的」の導入部分を収録しております。
「 全て理解 」ではなく「 フレームワークに登場する知らない書き方に慣れる 」がポイントです。
:::

### 自己紹介
ジーズアカデミー学校長(デジタルハリウッドでも教鞭をとる)山崎と申します。
[ジーズアカデミー](https://gsacademy.jp/mentor/)は開校6年目のデジタルハリウッドが運営する「起業家エンジニア養成スクール(卒業生が6年で69社起業し総資金調達額80億5,620万円と卒業生が頑張っている学校)」です。
**なぜ動画を公開したのか?**
今回、私の授業(初級者向け)をYoutube配信したものをまとめました。
画質は「コロナ」が始まった当初に自宅で初めて動画撮影するようになったので、あまり画質等は最高とはいえませんが、初学者には入りやすい内容なのではと思います(自分でいうのもあれですが・・・)。
全国のプログラミング初学者・初級者の皆さんの底上げになればと思い公開させていただきま

元記事を表示

macにPHP8.1をインストールする。

おおお!!めっちゃ構文エラー出してますやん
なんで、みんな気づかないんだろう。

**「いや、自分のPHPのversionが古いだけじゃん」**

# アップデート方法

## 結論

まずインストールしてリンクさせます。

““
$ brew install php@8.1 && brew link –force php@8.1
““

しかし、これではバージョンは変わりません。

““
$php -v
PHP 8.0.15 (cli) (built: Jan 21 2022 04:47:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.15, Copyright (c) Zend Technologies
with Zend OPcache v8.0.15, Copyright (c), by Zend Technologies
““

そこでパスを通します。

““
$ echo ‘export PATH=”/usr/local/opt/php@8.1/bin:$PATH”‘ >> ~/

元記事を表示

PHP、データベースにうまく接続できなかった事例

今回はPHPのソースコードからデータベースに接続するときに簡単なミスで生じる内容を報告します。

入力してもエラー表示がされずに、データベースに反映しないという内容です。

PHP version 7.4
10.4.22-MariaDB(phpmyAdimin)を使用。

(ケース)データベースに接続文字列

“`
$dsn = “mysql:dbname = php_work;host = localhost;charset = utf8″;
// エラー表示はされないが、接続はされない
“`
【原因】イコール(=)の間にスペースが入っている。
この部分を見やすくしたいがために、改行やスペースを入れてしまうと結果的に、接続が出来なくなる

正しくは、
__mysql:dbname=test;host=localhost;charset=utf8mb4(スペースを入れない)__

“`
$dsn =”mysql:dbname=test;host=localhost;charset=utf8mb4”;
// すべてを隙間を入れずに入力すること。
“`

簡単なところだが、意外に

元記事を表示

PHP上から順に実行されることを意識する。

rand()関数を使ってスコアに応じてメッセージを変更するプログラムを書こうとしたが、以下のようにrand()関数をwhile分の外(上)に出していたため、while文で10回繰り返す処理に全て同じスコアが入ってしまい意図しない結果となった。

“`PHP
60){
echo ‘合格!’;
}else{
echo ‘不合格。’;
}
echo “
“;
$try++;
}
?>
“`

while文の処理1回ごとに異なるスコアを出せるようにrand()関数をwhile文の中にセット。

“`PHP

元記事を表示

Docker環境でphp artisan tinkerが通らない

php artisan tinkerが通らない!他のartisanコマンドは通るのに。。。

## エラー
“`bash
Writing to /var/www/.config/psysh is not allowed.
“`

原因はホームディレクトリ「/var/www」の権限不足。
root権限でしか触ることができないが、別のユーザーを使っていたので権限エラーがでていた。

# やったこと>権限を変更

“`bash
$ sudo chmod -R 777 /var/www/
“`

sudoコマンドが入っておらずエラー。。
find . -name sudo
見つからず。

# 解決法
ホームディレクトリの所有者を変更する。
docker-fileに以下追加。再ビルドで通った
ちなみに-Rオプションは再帰的に権限を所有者を書き換える

“`docker
ARG HOME_DIR=’/var/www’
RUN mkdir -p $HOME_DIR
RUN chown -R $UID:$GID $HOME_DIR
“`

# 参考
[dockerでHOMEディレクトリを

元記事を表示

Laravelでの2段階認証

#はじめに#
セキュリティ面での不安からポートフォリオの管理者ログインに2段階認証をつけようと思ってやってみたところ、結構詰まったので備忘録として残します。記事の内容がセキュリティ的に明らかにまずかったりした場合は、ご指摘頂けると幸いです。

#記事の対象者#
アプリにLaravelを使用していて、管理者アカウントにワンタイムパスワードによる2段階認証を検討している方。

#環境#
Laravel 8.76.2
Google2FA-Laravel v2.0.1 リンクは[こちら](https://github.com/antonioribeiro/google2fa-laravel)

#参考#
https://github.com/antonioribeiro/google2fa-laravel

#Tinkerで管理者インスタンスを作成・鍵発行#
LaravelのコマンドラインツールであるTinkerを用いて、2段階認証を付与するインスタンスを作成します。インスタンス作成時に、Googleの認証アプリであるAuthenticatorに入力するための16桁の鍵を発行します。この鍵は後

元記事を表示

【PHP】「Parse error: syntax error, unexpected end of file, expecting “,” or “;” in~」というエラー発生

## 今回のコード
“`php:index.php
解析エラー:構文エラー、予期しないファイルの終わり、「、」または「;」が必要です

上記のようなエラーが発生しました。

## 解決方法
翻訳を見れば誰でも分かることですが、終わりの“` ; “`が抜けているためのエラーなのでセミコロンを追加します。

“`php:index.php

元記事を表示

composer installまたはcreate-project実行時、Failed to open stream などのエラーが発生する件の解決方法

# どのような問題か?
– composer install
– composer create-project

などを実行する際に、「Failed to open stream: No such file or directory」などのエラーが発生し、正常に完了しない。

# 結論
https://github.com/composer/composer/issues/9627

これでした。だいたい書いてあるので頑張って英語を読め。

> If you experience failed to open stream: No such file or directory or Plugin initialization failed or class not found type of issue, and are using VirtualBox / Vagrant, this is caused by the VirtualBox filesystem being buggy and not allowing access to the files right afte

元記事を表示

Laravel 関連でストックした記事まとめ

# 目的

いつか読もうがたまる → 読まないの流れをストップさせるため
ストック&いいねした記事のインデックスを作成しました。

# もくじ

| |もくじ| |
|:——-:|:———-:|:———-:|
|1|[**心得/マインド系**](#心得マインド系)|
|2|[**参考レファレンス**](#参考レファレンス系)|
|3|[**基本コマンド/メソッド系**](#基本コマンドやメソッド系)|
|4|[**初期設定/ライブラリ系**](#設計やアーキテクチャ系)|
|5|[**設計/アーキテクチャ系**](#心得マインド系)|
|6|[**ディレクトリ構成/命名規則**](#ディレクトリ構成や命名規則)|
|7|[**デバック系**](#デバック系)|
|8|[**ログ出力系**](#ログ出力系)|
|9|[**マイグレーション系**](#マイグレーション系)|
|10|[**テスト系**](#テスト系)|
|11|[**Docker系**](#コンテナ系)|
|12|[**キャッシュ系**](#キャッシュ系)|
|13|[**バリデーション

元記事を表示

PHPでMDB2の接続確認をする

MDB2の接続周りを確認した時のメモ。

“`php:動作確認用のコード
getMessage() . “\n”;
exit;
} else {
echo “OK\n”;
}

// SQLを実行
$query = ‘select * from hoge limit 5’;
$q = $db->query($query);

// 実行結果を出力
while($row = $q->fetchRow()) {
var_dump($row);
}
“`

元記事を表示

php バリデーションルール

電話番号
‘phone_number’ => [‘required’, ‘regex:/^\d{2,5}-?\d{1,4}-?\d{4}$/’, ‘between:10,13’],

チェックボックス一つ以上選択

$target_type_rules = [
‘section1.is_full_time_employee’ => ‘required_without_all:section1.is_contract_employee,section1.is_part_timer,section1.is_part_time_job,section1.is_part_time_employee,section1.is_employment_type_other’,
];
$target_type_messages = [
‘section1.is_full_time_employee.require

元記事を表示

Eloquentを使ったLIKE検索機能の作り方

#はじめに
検索結果をモデルコレクションで欲しいためクエリビルダではなくEloquentを使う必要があったのですが、調べるとクエリビルダのものしかヒットしなかったため、今回記事にします。初学者なため瑕疵や不備があると思うので、ツッコミやより良い方法があればどんどんお願いします

#環境
Laravel 8.79.0
PHP 8.1.1

#検索機能
“`php:PostController.php
public function search(Request $request)
{
// searchが検索ワードが入力されたフォーム部品 requiredは入力必須のバリデーション項目
$request->validate([‘search’ => ‘required’]);
// 検索ワード取得
$search = $request->search;
// 全角スペースを半角に変換
$spaceConversion = mb_convert_kana($search, ‘s

元記事を表示

GitHub Actionsで複数のPHPのバージョンとOSでまとめてPHPUnitを動かしてみる

PHPのライブラリなどを開発しているとPHP7.4 / 8.0 / 8.1 on Linux / macOS / Windowsのように複数の環境の組み合わせでテストを実行したい事があると思います。
手元でこれらの環境を作って毎回テストするのはあまりにも効率が悪いので、今回はGitHub Actionsを使って複数の環境でまとめてテストを実行できるようにしてみました。

## 用意するもの
– 手元でPHPUnitが動くようになっているプロジェクト
– GitHubのレポジトリ(publicでもprivateでもよい)
– `composer.json`が存在して`composer install`で必要なライブラリが揃う状態になっているプロジェクト

## GitHub Actionsの設定を入れる
`.github/workflows/phpunit.yml` に以下のYAMLファイルを配置します。おしまい!

**とても簡単ですね。**

今回は、Ubuntu(Linux)とWindowsとmacOSでPHP7.4と8.0と8.1を動かす設定を入れてみます。

“`yml:.g

元記事を表示

OTHERカテゴリの最新記事