- 1. macにPHP8.1をインストールする。
- 2. PHP、データベースにうまく接続できなかった事例
- 3. PHP上から順に実行されることを意識する。
- 4. Docker環境でphp artisan tinkerが通らない
- 5. Laravelでの2段階認証
- 6. 【PHP】「Parse error: syntax error, unexpected end of file, expecting “,” or “;” in~」というエラー発生
- 7. composer installまたはcreate-project実行時、Failed to open stream などのエラーが発生する件の解決方法
- 8. Laravel 関連でストックした記事まとめ
- 9. PHPでMDB2の接続確認をする
- 10. php バリデーションルール
- 11. Eloquentを使ったLIKE検索機能の作り方
- 12. GitHub Actionsで複数のPHPのバージョンとOSでまとめてPHPUnitを動かしてみる
- 13. Susan Donovan
- 14. 【THE THOR】トップページだけフレームを非表示するカスタマイズ【CSS・PHP】
- 15. 【PHP】Laravelとは??
- 16. Laravel 画像アップロード機能 手順
- 17. 【PHP】値があれば先頭にくっつける、無ければ何もしない
- 18. その7(6の続きとエスケープシーケンス、ヒアドキュメント)
- 19. 先週の1週間を取得
- 20. PHP imagick convolveImage の引数の変更
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
while ($try <=10){ $score = rand(0,100); echo $try.'回目'.' '; echo $score
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
Susan Donovan
https://susandonovan.com/
【THE THOR】トップページだけフレームを非表示するカスタマイズ【CSS・PHP】
https://10to1travel.com/thethor-topframe-hide-36240.html
【PHP】Laravelとは??
## はじめに
Laravelの学習や開発経験のあるエンジニアです。
今までインプット重視になってしまっていた反省も踏まえ、アウトプットしていきたいと思います。
今回は、Laravelとは何ぞやという事について書いていきます## PHPとは
前提としてLaravelはPHPのフレームワークです
PHPを簡単に解説します
> PHP (PHP: Hypertext Preprocessor を再帰的に略したものです) は、広く使われているオープンソースの汎用スクリプト言語です。 PHP は、特に Web 開発に適しており、HTML に埋め込むことができます。
引用(https://www.php.net/manual/ja/intro-whatis.php)PHPはWebアプリケーションの開発を手軽に実現することができる、という特徴を持ったプログラミング言語です。
初学者にもおすすめなプログラミング言語だと思います注意点としては動的なHTMLの生成もデータベースへの接続も柔軟にできてしまいます。柔軟ということは、整理されていないプログラミングが容易に出来上がってしまうという側
Laravel 画像アップロード機能 手順
### 超わかりやすい記事
https://note.com/laravelstudy/n/n038bd68f53a7#BkZEu
この方の記事は非常にわかりやすくい。
具体的にいうと、ただコードを書くだけではなく
各コードに対してのポイントが書いてあるところが良い。noteフォローしておこう。
### 参考にした記事
https://readouble.com/laravel/5.5/ja/validation.html#rule-image
【PHP】値があれば先頭にくっつける、無ければ何もしない
#コード
“`PHP
その7(6の続きとエスケープシーケンス、ヒアドキュメント)
シングルクォートとダブルクォートの違いについて
変数を展開するか
ダブルクォートは文字列に含まれる変数を解釈し、その値で変数の箇所を置き換える。
そのような処理のことを変数展開または変数のパース(Parse)と言う。
シングルクォートは変数展開せずそのまま表示される。
前回の例
“`
“;$data2 = ‘怖かったホラー映画は「{$title}」です。
’;print $data1;
//結果: 怖かったホラー映画は「死霊館シリーズ」です。print $data2;
//結果: 怖かったホラー映画は「{$title}」です。“`
変数全体を{~}で囲んでいるのは、変数の範囲を明確にするため。
例えば次の例
“`
“I am $modifier_man!!”
`
先週の1週間を取得
#先週
$last_sunday = date(“Y-m-d”,strtotime(“last Sunday”));
$last_week_cast_ranking_list = RankingCastDaily::getRankingListByCondition([
‘area_id’ => $area,
‘not_price_0’ => ‘true’,
‘start_date’ => date(“Y-m-d”,strtotime(“-6 day” .$last_sunday)),
‘end_date’ => date(“Y-m-d”,strtotime(“last Sunday”)),
]);
PHP imagick convolveImage の引数の変更
PHP imagick の convolveImage は画像の畳み込み処理するメソッドです。
この convolveImage は、imagick 3.3.0 => 3.4.0 を境に受け取る引数の形式が変わりましたが、公式マニュアルが分かりにくいのでメモを作りました。– 公式マニュアル
– https://www.php.net/manual/ja/imagick.convolveimage.php# convolveImage の機能
画像に対して畳み込みの処理ができます。
例えば、以下のような畳み込みカーネルを与えるとブラー効果を得られます。“`math
\frac{1}{16}
\begin{vmatrix}
1 & 2 & 1 \\
2 & 4 & 2 \\
1 & 2 & 1 \\
\end{vmatrix}
“`| 元画像 | convoveImage 適用後 |
|—|—|
![input.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1798/163