PHP関連のことを調べてみた

PHP関連のことを調べてみた

Laravel10 + Inertia + vue3で動的な多言語機能の実装

# 概要
laravelで動的な言語切り替えを実装しようとした際に情報があまり出ていなかったので備忘録も含めて実装のマニュアルを残そうと思いました

# 必要なものをインストール

### コマンド一覧
**多言語対応初期設定**
バックエンド側
`composer require laravel-lang/common –dev`

`php artisan lang:publish`

vue側
`npm i laravel-vue-i18n`

**対応言語一覧**
https://github.com/drobee/Laravel-lang/tree/master/json

# 実装
### Laravel側
“`php:/app/config/languages.php
‘English’,
‘ja’ => ‘日本語’,
‘vi’ => ‘Tiếng Việt’,
‘zh-CN’ => ‘汉语’,
‘tr’ => ‘Türkçe’,
‘ar’ => ‘اللغة العربية

元記事を表示

PHP 値の送信と受け取りをしてみる

## はじめに
PHPといえば値の入力フォームに入力した値を送信し、別で受け取ります。勉強していることのまとめなので完璧ではありません。参考程度にお願いします。

## 値の送信
“`php
//Post.php

//get.phpに送信
 //messageという名前でテキストを送信

“`
method=”get”はurlの後に値を付与します。
method=”post”はurlから見えません。

## 値の受信
値の受信にも色々ありそうですが今回は以下のやり方でやります。多分別は$_GETを使うものです。
“`php
//Get.php

$message = filter_input(INPUT_GET, ‘message’); //getメソッドで送られたmessage
“`
フォームから送信された値の取得にはfilter_inputを使います。filter

元記事を表示

PHP 別のファイルの読み込み

## はじめに
クラスや関数など書いた外部ファイルを読み込んで使うことがあります。自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。

## requireかincludeで読み込む
同じフォルダ内にあるclass.phpというファイルを読み込んでいきます。
“`php
require(‘class.php’); //ファイルが読み込めなかったらその場で処理が止まる
include(‘class.php’); //ファイルが読み込まなくても処理が止まらない
“`
以下のような少し違う処理の書き方もあります。
“`php
require_once(‘class.php’); //ファイルを一度だけ読み込む
include_once(‘class.php’); //ファイルを一度だけ読み込む
“`
ぶっちゃけ_onceがどのように活躍するかわかりませんが、覚えておきます。

## 一応少しだけパスの書き方
今度自分が見返すようにサンプルパスを少し書いておきます。
“`php
require(‘class.ph

元記事を表示

PHP オブジェクト クラス

## はじめに
PHPのオブジェクトです。何年か前にpythonで少しやった気がします。自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。

##クラスの定義
クラスはclass クラス名で定義します。
また、クラス名は大文字スタートです、
“`php
class Client{
}
“`

プロパティとメソッド、定数を定義していきます。
“`php
class Client{
public $number;
public $name;
public const VERSION = 1.0;

public function info(){
printf(‘顧客番号->%d、顧客名->%s’ . PHP_EOL, $this->number, $this->name);
}
}
“`
このthisってのがインスタンスのことって考えると覚えやすかったりした気がしてきたりします。
また、以下のように記述することでプロパティの型の指定が可能です。普通の書き方

元記事を表示

【Laravel Sail】ubuntuでsail upコマンドが実行できない場合

## きっかけ
Laravel Sailで`sail up -d`というコマンドを実行すると、以下のようなエラーが出る。
“`
docker is not running
“`

## 対処法
**Windows**の場合、先に以下のコマンドを実行する。
“`
sudo chmod 666 /var/run/docker.sock
“`
※ubuntuにログインした後に、上記コマンドを実行する。

元記事を表示

【Laravel】変数の値を確認する方法

## dd関数を使用する
`dd(変数名);`と記述すると、ブラウザに変数の値が表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3323019/d5eda7ca-3593-0fd0-b3a5-f3e907947c0e.png)

## 参考サイト
https://biz.addisteria.com/laravel_debug/

元記事を表示

Laravel Eloquent 不要なデータは取得しないようにしよう!

現在、Laravelの使用経験が半年を越えた学生エンジニアです。

Laraelには非常に便利な「Eloquent ORM」という非常に便利な概念が存在します。
主に以下のような解釈ができると思います。

1. SQLの簡略化
1. データベースへのインターフェース

ざっくりとご説明したいと思います。

## 「Eloquent ORM」と「Model」
LaravelはMVCモデルと呼ばれています。

**Model View Controller**の略です。
1. Modelを用いてテーブルからデータ取得
1. Controllerを用いてデータを処理
1. Viewで処理されたデータを表示

上記の流れで運用されるためです。(厳密にはもっとたくさんありますが!)

上記の1の工程がModelですが、
**Eloquent ORM と Modelはほぼ同義と考えて構いません**

では実際に効率的に書いていきましょう!

## なるべく不要な値を取得しない

“`
$attendances = Attendance::all();
“`
まず、Atten

元記事を表示

vscodeでDocker上のXdebug2を動かす

# 概要
VscodeでXDebug2を使うための設定を行いました。
Dockerを使っています。

※macでの確認はしていません。

githubのリポジトリは以下の通り。

https://github.com/RYA234/php-xdebug2-docker-vscode

# 開発環境

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710623/578a9062-15f0-1e2d-0be4-c0e0102bcfba.png)

名称|バージョン|説明
—|—-|—-
Docker|24.0.6|コンテナ型仮想環境
Windows|10|OS
XDEBUG|2.2.5|PHP用のデバッグ用の拡張機能
VSCODE|1.85.1|IDE
PHP Debug|1.34.0|VSCODEでXdebugを使えるエクステンション。

# dockerの起動方法

“`bash
# dockerコンテナをビルドする
docker-compose build

# do

元記事を表示

今までの業務にて経験したこと

広く浅く今まで触れてきたが、これよりは深く利用するようにキャリアを積んで行く予定。

# プログラミング言語
1. C
組み込み開発プロジェクトの際に利用
1. C#
デスクトップアプリの開発プロジェクト時に利用
1. HTML,CSS,JS,PHP
Webサービス開発プロジェクト時に利用

# 開発ツール
1. eclipse
1. Visal Studio
1. PhpStorm
1. Visual Studio Code

# ツール
1. Redmine
1. Redmine
1. Backlog

※本内容について後日更新を予定しています。

元記事を表示

【PHP/Slim4】3.軽量フレームワーク(Slim4-skeleton) Twig

## やりたいこと
Slim4のテンプレートエンジンを使ってみる
Twigがメジャーっぽいので、なんとなくTwigを使ってみようと思う

## Step1.サンプル環境の構築
[前回の記事を参照](https://qiita.com/miyaken3381/items/a63f70b65a01c8b77225)

## Step2.Twigのインストール
プロジェクトフォルダに移動後、以下のコマンドを実行
~~~js
composer require slim/twig-view
~~~

## Step3.Twigの依存関係を設定
dependencies.phpにTwigの依存関係を注入する
またsettings.phpでパス等の設定を切り替えられるようにしておく
#### app/settings.php
~~~php
return function (ContainerBuilder $containerBuilder) {

// Global Settings Object
$containerBuilder->addDefinitions([

元記事を表示

【2024年版】LaravelでIntervention Imageを使う方法

## 概要

PHPの画像処理ライブラリである**Intervention Image**の**バージョン3**を**Laravel**で使う方法について解説します。

先日、Qiitaの質問で「Intervention Imageがエラーで使えない」というものがありました。私も使ったことがあるので調べてみたのですが、どうやら2023年12月にバージョン2から3へアップデートされたようです。そして、それによって「Laravel Intervention Image」といったキーワード検索でヒットする記事の情報では導入できなくなってしまったので、この記事を執筆することにしました。

https://image.intervention.io/v3

## Intervention Imageのバージョンアップについて

https://image.intervention.io/v3/introduction/upgrade

上記のアップグレードガイドを参照すると、次のように記載されています。

> Intervention Image 3 は、以前のバージョンから引き継がれたコードが

元記事を表示

PHPでMySQLデータベースに接続

# PHPでMySQLデータベースに接続

### プリペアードステートメントとは
実行したいSQLをあらかじめ用意して、可変となるパラメーターは後から渡す仕組み

– プリペアードステートメントでパラメーターを可変にして名前で検索する場合
“`php:sample.php
“山田”)

// プリペアードステートメント
$stmt = $pd

元記事を表示

CakePHP2系の環境構築手順

# はじめに
この記事では、CakePHP2系の環境構築手順を解説します。
以前、私はCakePHP2系の案件に参画しておりました。
案件参画前にプライベートで学習しようと思い、下記の手順で自身のPCにCakePHP2系の環境を構築しました。
記事投稿時点(2024年時点)では、CakePHPの最新バージョンは5系で、2系は既にサポート終了しております。
非常にレガシーな技術であるため、正直下記の情報は役に立たない可能性が高いと予想しておりますが、念のため備忘録として残しております。

# 各技術とバージョン

– PHP 5.6
– MySQL 5.7
– CakePHP 2.10
– MacOS

# ゴール設定

Dockerを用いてCakePHP 2系の環境構築を行い、ウェルカムページが正常に表示されている状態を目指す。
↓ エラーありのウェルカムページと、エラーなしのウェルカムページの比較
【Qiita】ひとりアドベントカレンダー完走率を調査してみたよ

2022年から人数上限なしの[ひとりアドベントカレンダー完走賞](https://qiita.com/advent-calendar/2023/present-calendar#qiita_award)が新設されたことに伴い、2023年はひとりで[アドベントカレンダー](https://qiita.com/advent-calendar/2023/categories)を走る人がそこそこ見受けられました。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/28bbf8e6-6951-8fe3-bbe5-8ceaf8569ada.png)

ということでこれは、何名がひとりアドベントカレンダーに挑戦し、そのうちどれほどが完走したかを調べてみたという嫌がらせ記事になります。

なお調査のためのデータ抽出は2023/12/30に行っています。

# 調査結果

全アドベントカレンダー数、1203件。

うち、参加者がひとりのカレンダー、320件。
うち、完走数、98件。
うち、完走賞ぬ

元記事を表示

取得したページネーション内のデータを逆順で表示したい

### 取得したページネーション内のデータを逆順で表示したい

ページネーションしたデータの、中身を逆に表示したいとき、つまり下を最新のチャット、上を古いチャットにしたい時の方法です。

“`ChatController.php
$chats = Chat::where(‘channel’, $chid)
->orderBy(‘created_at’, ‘desc’)
->paginate(10); // 1ページあたり10件のメッセージを表示
“`
これでデータを取得してBladeに渡します。

bladeでは表示の際に、

“`chat.blade.php
@foreach ($chats->reverse() as $chat)

@endforeach
“`

foreachの中でreverseをするのですね。

#### よく考えると、、
ただよく考えると、foreachの中で$chatを上に追加していけばいいのかと。

参考:ChatGPT

元記事を表示

Webサーバのバージョン隠ぺいの方法及びメリット。

# 概要

Webサーバのバージョンを全世界に公開してしまっていると、セキュリティ上よくない。
例えば、機器の脆弱性は色々なサイトから公表されているが、(以下はZabbix)

https://support.zabbix.com/browse/ZBX-23388

該当のバージョンに対応する脆弱性を検索されてそれを実行されてしまうという恐れがある。

*上記の例だと、ZabbixAgentのバージョンが外から見れてしまうと問題になりそう。
そのため、各サービスのバージョン情報は外部から見れないようにするとよい。
今回は、**apacheとphpのバージョン情報をcurlで見れないようにしていく**手順を記載する。

## 事前確認
対象のWebサーバ宛てにcurlコマンドを実行する。

“`
curl -v –head url
“`
何も対処していないと以下のようにバージョンが表示される。
200OKのすぐ下に、Apacheのバージョンが表示されているのが確認できると思われる。

“`:出力結果
PS C:\Users\daigo.ito> curl -v –head h

元記事を表示

Ubuntu22でNginx+PHP-FPM+Zabbixを使用する

# 方法
“`console
user@dc01:~$ sudo su –
[sudo] password for user:

root@dc01:~# apt install -y nginx php8.1 php8.1-mbstring php-pear php-fpm
root@dc01:~# vi /etc/nginx/sites-available/default
↓下記内容をserver{}内に記載
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
root@dc01:~# systemctl restart nginx php8.1-fpm
root@dc01:~# apt remove -y apache2
root@dc01:~# apt autoremove -y
“`
ここでhttp://<サーバのIP>/info.phpにアクセスして下記画面のようになることを確認してください。

元記事を表示

【Ver6.4対応】zabbixのスクリプトでslackに通知する

## 概要
[以前Macにzabbixサーバを立てた](https://zenn.dev/zuzuzu/articles/mac_zabbix_install)のでそれにslackに通知する機能を持たせる。しかし、1番簡単なwebhookからの通知設定を実施すると[zabbix_serverがクラッシュしてしまう事象](https://www.zabbix.jp/node/1036)が発生する。(ソースインストールした時のオプションが不足していた?)

そこでスクリプトを用いてslackに通知する機能を実装したのでその手順について説明する。

## 手順

### Slackの「Incoming Webhooks」を作成してチャネルに通知するアプリを作る
slackの左下の**アプリを追加する**を押下

![](https://storage.googleapis.com/zenn-user-upload/de95deed8cde-20231230.png)

検索窓で**Incoming Webhooks**と入力してアプリを探し、**追加**を押下
![](https://sto

元記事を表示

【Ver6.4対応】Macへのzabbix installで苦労した話

## 概要
色々あってMacにzabbix_serverを入れて監視サーバをたてる事になった。
Linux系であればパッケージインストールできるが
Macではそういうわけにもいかないのでソースインストールすると
たくさんの罠があったので今後同じ様なタスクが発生した際の備忘録を残す。

## 前提
“`
Host: macOS 13.5
BuildVersion: 22G74
Zabbix version: 6.4

Web: Apache/2.4.58 #後述しますがMac標準のapacheは使いません
Front: PHP/8.3.1
DB: postgreSQL 14.10
“`

## 手順
参考:https://www.zabbix.com/documentation/current/jp/manual/installation/install

### ソースアーカイブのダウンロード
以下のURLから必要なzabbix versionのソースをダウンロードします。
https://www.zabbix.com/download_sources

### ソースアーカイブの

元記事を表示

Azure AppService で Nginx と PHP のバージョンを非表示にしてみた

Azure AppService で Nginx と PHP のバージョン非表示を試してみました。

## 検証用 AppService を用意

“`bash:bash
region=japaneast
prefix=mnrwebtest

az group create \
–name ${prefix}-rg \
–location $region

az appservice plan create \
–name ${prefix}-plan \
–resource-group ${prefix}-rg \
–is-linux \
–sku B1

az webapp create \
–name ${prefix}-app \
–resource-group ${prefix}-rg \
–plan ${prefix}-plan \
–runtime “PHP|8.0”
“`

## AppService の SSH で phpinfo を作成

“`bash:bash
echo “

元記事を表示

OTHERカテゴリの最新記事