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

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

RHEL9系でphp-memcachedが入らない

## 事象
RHEL9でphpのmemcachedモジュールを有効化しようとインストールを試みるも、上手くいかない。
依存解決でlibmemcachedというパッケージが必要だが、リポジトリ上に無い様子。

## 原因
RHEL9ではlibmemcachedがデフォルトで有効なリポジトリに存在せず、`CodeReady Linux Builder`というリポジトリを有効化しないといけないようだ。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html/package_manifest/codereadylinuxbuilder-repository

## 対応
リポジトリを有効化
“`
dnf config-manager –set-enabled codeready-builder-for-rhel-9-rhui-rpms
“`
確認
“`
dnf repolist
repo id repo

元記事を表示

PHPUnit 11 でアノテーションからアトリビュート (Attribute) に移行するメモ

2024年02月に [PHPUnit11](https://phpunit.de/announcements/phpunit-11.html) がリリースされました。

休日に何気なく自分のリポジトリの PHPUnit を 11 にバージョンアップしてみたら全てのテストが動作しなくなり、調べてみたら PHPUnit 11 では PHPDoc のアノテーションは非推奨で、次のバージョンでは利用できなくなるのでアトリビュート (Attribute) を使うことが推奨されている模様。

“`bash
Metadata found in doc-comment for method Tests\XxxxTest::xxxxxx().
Metadata in doc-comments is deprecated and will no longer be supported in PHPUnit 12.
Update your test code to use attributes instead.
“`

多分非推奨を無視するオプションとかがあるんでしょうけど、どうせ次のバージョンでア

元記事を表示

WSL2 Docker Laravel環境でPhpSpreadsheetを使うまでのメモ

# はじめに
WEBエンジニア2年目の初心者です。
仕事でlaravel内でPhpSpreadsheetを使うためにインストールしようとしたらエラーが出てインストールできない・・・
Dockerも使った経験が浅いので、いろいろ調べたため、自分用のメモ兼困っている人の手助けになれば幸いです。

# 1.Phpspreadsheetのインストールを試みる

以下のコマンドを打ってみると見事にエラーが出てさっそく困った

“`
composer require phpoffice/phpspreadsheet
“`
↓エラー内容
“`
Package phpoffice/phpspreadsheet has requirements incompatible with your PHP version, PHP extensions and Composer version:
– phpoffice/phpspreadsheet 2.0.0 requires ext-gd * but it is not present.

元記事を表示

$_SERVER

## はじめに

$_SERVERについて整理する。

### $_SERVER

リクエストヘッダー、またはサーバー固有の変数情報

### リクエストヘッダーを取得する

ヘッダー情報とサーバー変数とを区別するために、生のヘッダー名を次の規則で整形したものを格納する。

・ハイフン(-)はアンダースコア(_)に変換
・接頭辞として「HTTP」を付加

例えば、User-Agentヘッダーを取得するには、$_SERVER[‘HTTP_USER_AGENT’]のように記述する。

### レスポンスヘッダーを設定する

header関数を使うことでレスポンスヘッダーを設定できる。
ヘッダーを出力するのでheader関数の前に何か出力があった場合はエラーとなる。

“`php
header(string, $header [, bool $replace = true [, int $response_code]]) : void

$header :ヘッダー文字列
$replace :同名のヘッダーが出力済みである場合に置き換えるか
$response_code :HTTP応答ステ

元記事を表示

laravel breezeでマルチログインのタスク管理ツールを作る②_ユーザー一覧とタスク一覧、残タスク数一覧の作成

# 環境
laravel10

# これまで
[laravel breezeでマルチログインのタスク管理ツールを作る⓪_laravel Sailでdocker立上げ ※Windows版](https://qiita.com/forever—searcher/items/1321590cb6af4c4383d9)
[laravel breezeでマルチログインのタスク管理ツールを作る①_下準備(seederでダミーデータ作成まで)](
https://qiita.com/forever—searcher/items/34ef1827314c1756f9d0)

# 学びたいこと
– laravel breezeでの表示画面(view)の増やし方

# この章のゴール
ユーザー一覧
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1563301/91658759-2fc4-55b3-60dd-79c84155f387.png)
タスク一覧
![image.png](https://q

元記事を表示

【docker】mysqli_connect()に失敗しAccess deniedした時の対処

docker環境下でphpからtableを作成しようと、mysqliを使おうとしたら手こずった備忘録。

環境
・Macbook air 2020 M1
・Docker v25.0.2
・php v8.3.6
・Mysql v8.3
 

1.Call to undefined function mysqli_connect()はmysqliのインストールで解決

“`% docker-compose exec app php data/dbcreate.php
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /var/www/html/data/dbcreate.php:15
“`

mysqli_connectが機能していないと。
なんと、php7.0以降はmysqliが入ってないので、mysqliをDLする必要がある。

phpのモジュールインストール状況を見ると
“`
root@465201bc8bff:/var/www/html# php -m | g

元記事を表示

Centos7でZabbixを建てる

# はじめに
現場に行くとなんだかんだ触るzabbixを作ってみようかと思った。
断っておくがこれは商用を想定したものではない。
あくまでZabbixの画面を比較的簡単に目にするためのもの。

# 前提
iptables,selinux停止済みのCentOS7サーバが作ってある前提。

# 前提リポジトリのインストール
今回インストールするzabbixは時代背景を鑑みて4.2を入れる予定。
zabbix4系列はphp5.4以上が必要だがremiリポジトリで簡単に7.2が手に入る。
なので今回はphp7.2を使う。
(別のバージョンでもいい)
そして一緒にepelリポジトリもインストールしておく。

“`ruby:前提リポジトリのインストール
yum -y install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
“`

# php7.2インスト

元記事を表示

Laravel Auditingのログがクエリビルダのイベントでは記録されない

# 概要
業務でLaravel Auditingを使用しており、監視対象のカラムが変更された際にレコードがInsertされない事象に対応したときの備忘録です。
間違いがあればご指摘をいただけると嬉しいです!

# Laravel Auditingとは
Laravel Auditingとは、DBにおいてレコードに変更が行われた際、自動でログを記録してくれるパッケージのこと。
どのカラムが誰によってどんな風に変更されたか監視することができます。
(問い合わせサポート業務とかであると助かるかも…)

# クエリビルダを使用した場合はテーブルにレコードが入らない
以下のドキュメントにもあるようにクエリビルダによるDBの更新は記録されません。
EloquentでModelを使って変更してあげる必要があります。
https://laravel-auditing.com/guide/community/troubleshooting.html
https://laravel-auditing.com/guide/community/why-laravel-auditing.html

# Eloqu

元記事を表示

$_POST、$_GET

## はじめに

スーパーグローバル変数について整理する。

### $_POST

POST形式のHTMLフォームから渡された情報

ユーザーから入力された値や外部サービスから取得した値を表示する場合には、HTMLエスケープが必要となる。
エスケープ処理を正しく行わないとXSSの脆弱性の原因になる。

“`php:Encode.php
function e(string $str, string $charset = ‘UTF-8’): string
{
return htmlspecialchars($str, ENT_QUOTES | ENT_HTML5, $charset, false);
}
“`

“`php:post.php





ポストデータ


こんにちは、 さん!

元記事を表示

PHPでファイルを操作する際にファイルの権限によって書き込み・読み取りができなることがある件

# 環境
– CentOS Linux release 7.9.2009(Core)
– Apache 2.4.6
– PHP 7.1.33
# 起こったこと
PHPでWebスクレイピング的なプログラムをWindowsからCentOSに転送してCentOS側で実行したとき、色々なセーブデータをファイルに保存するはずが保存されてませんでした。
自分はurlencode、urldecode関数が混沌としていたためそこらへんでエラーが起こっていたと思っていました。
# 原因
自分はWindowsでscpでCentOSに転送してからCentOSでまたドキュメントルートに転送するスクリプトを実行していたので無駄だったため、CentOSからWindowsにscpして、というスクリプトでやっていました。
その時のスクリプトはこちら。モザイクは[]で囲っています。
“`sh:apply.sh
echo -n “Host Address: ”
read hostaddr

hostip=”[ユーザー名]@192.168.0.$hostaddr”
hostdir=”:C:[Windows側のドキュメント

元記事を表示

(JSPsych不要)生PHPと生JavaScriptで書く心理実験刺激入門

# JSPsych?そんなもの知りません(でした)

生PHPと生JavaScriptを習得した方にとっては、ライブラリに頼らない方が早く心理実験刺激を作成できるのではないでしょうか?
また、JSPsychを使ってみたものの、痒いところに手が届かないと感じてた方もいらっしゃるかと思います。

そんな人のために、生PHPと生JavaScriptで作成した心理実験刺激の例を作成しました。
自由にご活用ください。

取り上げているのは、映像刺激に対する評価実験です。
後輩ちゃんが不要なファイルをあげたりあげなかったりしていますが、お気になさらず。

https://github.com/Hoboki/russell-evaluation

PHP7系が入っていれば動作しますが、今回は簡単にMacOSでのDockerを用いた環境構築について説明します。

1. Docker Desktopのインストール
https://docs.docker.com/get-docker/

1. コードの引用、コンテナ立ち上げ
Terminalで以下を実行
“`bash
c

元記事を表示

【docker】phpdotenvで.envが読み込めないのでディレクトリを変えた

目的
・passとか機密情報を.envファイルから読み込めるようにしたい。

環境
・Macbook air M1 2020 / sonoha 14.2.1
・Docker
・php:8

phpdotenvはcomposerでインストールするので
まずdocker hub公式からcomposerが使えるようにすべくDockerfileに下記を追記。
“`Dockerfile.
COPY –from=composer /usr/bin/composer /usr/bin/composer
“`

vlucas/phpdotenvをインストールするべく
“`
$ composer require vlucas/phpdotenv
“`

まずはphpdotenvが機能して.envの読み込みを確認する。
phpdotenvが機能して.envを読み込めるように

require __DIR__ . ‘/../vendor/autoload.php’;
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . ‘/..’);
$dotenv

元記事を表示

laravel breezeでマルチログインのタスク管理ツールを作る①_下準備(seederでダミーデータ作成まで)

# 前提
– dockerでのプロジェクトは作成済み
– laravel breezeはインストール済み
– laravel sailでのコンテナ立上げ済み

前の章で上記済み
https://qiita.com/forever—searcher/items/1321590cb6af4c4383d9

# やること
1. taskモデル、ファクトリー、テーブルの作成、
1. userと、userに紐づくtaskのダミーデータ作成

まで

# 手順
1. `./vender/bin/sail artisan make:model Task`:Taskモデルの作成
1. `./vender/bin/sail artisan make:migration create_tasks_table`:マイグレーションファイルの作成
1. `./vender/bin/sail artisan make:factory TaskFactory –model=Task`:Taskファクトリーの作成
1. userFactory.phpの編集:ダミーのパスワードだと入れないので、後でログインできる

元記事を表示

HTTPクライアントGuzzle

## はじめに

HTTPクライアントであるGuzzleについて整理する。

## HTTP通信の基本

指定したアドレスにアクセスして取得したファイルをテキスト表示する。

“`http_basic.php
require ‘../vendor/autoload.php’;

$cli = new GuzzleHttp\Client([
‘base_uri’ => ‘http://localhost:8000’,
]);

$res = $cli->request(‘GET’, ‘/sample.txt’);
print $res->getBody();
“`

### autoload.phpをインポートする

autoload.phpはライブラリを自動ロードするためのコード。
Composerでインストールしたライブラリを使う際はあらかじめautoload.phpをインポートしておく。

### GuzzleHttp\Clientオブジェクトを生成する

GuzzleHttp\ClientはGuzzleの中核とも言うべきクラス。
HTTP通信そのものを管理する。

元記事を表示

PHPSandboxで、laravelのmiddlewareの練習①_権限テーブル作成、ダミーデータでログインまで

# 内容
表題の通り。

# なぜ記事にした?
・laravelのmiddlewareを使った実装の練習をしたかった
・環境を作るのを省くため、phpsandboxでやりたかった
・ダミーデータでログインする方法が割と書いてない

# 参考
https://qiita.com/shunpeister/items/5ff1d71aedaf86712371
こちらの記事を、phpsandboxで実践します

# 前提知識

[phpsandboxのbash、sqliteの操作](https://qiita.com/forever—searcher/items/99abed6962299193ba55)

# 本編、手順
以下、手順です

## プロジェクトとrolesテーブルの作成

1. テンプレートから、laravel10 breeze(blade)のプロジェクト?(notebook)を作成
1. `php artisan make:migration create_roles_table`を実行:マイグレーション作成。ユーザーマイグレーションファイルは既にあるのがいいところ
1.

元記事を表示

多言語翻訳プラグインGTranslateの導入方法

# 初めに
業務でWordpressを使用することになり、最近本格的に学習を始めました。ショートコードの導入や、自作テーマを使用する際のウィジェットの追加など、地味に苦戦したので忘備録にします。

## 注意書き
初学者のため、誤りや拙い点があるかと思います。明らかな間違いがあるときにはコメントをいただけると嬉しいです。

## GTranslateとは?
Livecastが開発するWordpressで使用できる無料プラグインのこと。簡単操作で日本語を英語や中国語、韓国語に変換できる。

Translate WordPress with GTranslate

## 導入方法

### ブロックテーマでの導入方法
既存テーマを使用する場合は、外観→ウィジェットから簡単に追加できます。

1. Translate WordPress with GTranslateをプラグインの追加画面から検索し、インストール、有効化する
1. 設定を選択し、設定したい言語の種類やスタイリングを指定する
![スクリーンショット 2024-04-15 15.30.21.png](http

元記事を表示

phpsandboxでlaravel breezeを練習(usersテーブル、ダミーデータの作成まで)

# 記事内容
 表題の通り。

 本記事はphpsandboxで仮想のプロジェクトを作って、
 factoryでusersテーブルにデータを差し込むところまで。

# 対象者

・laravel初学者
・ほかの言語でMVCで開発やっていて、laravelどんなものか知りたい人

# 前提知識

 laravelの基本とlaravel breeze。
 laravel breezeするとログイン機能に必要な一通りのファイルを作ってくれて実装自動でしてくれる。その詳細は各々で調べるということでお願いします

# なんで記事にした?
 docker使うのめんどいと思い。
 phpsandboxでの操作を探してみると、なかなか見つからない。

 sqlite使ったことない人は、もーしかしたらつまづくかもと思い記事にしました。
 
# 注意

 phpsandboxのテーブルの中身は、DBツール・phpmyadminで表示できません。
 CLIからの直接表示のみ。
 (方法もしかしたらあるかもですが、自分はまだ知りません。)

## 本編、手順

### ①phpsandboxで「laravel

元記事を表示

apacheにphpとmysqlを入れる

# 初めに
apacheにphpとmysqlを入れることができたので解説します。

# 環境情報
macOS Sonoma 14.4.1
CentoOS Stream X_86_64
Apache/2.4.57
PHP 8.3.6
mysql Ver 8.0.36

# 解説
## phpの設定
rootユーザーでログイン

remiをインストール
“`
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
“`

エラー
“`
Problem: conflicting requests
– nothing provides epel-release = 9
“`
エラー解決
“`
dnf repolist all | grep -i epel
“`
でepelがなかったから入れ直した

“`
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm -y
“`

元記事を表示

【これだけはやっとけ】Laravel/PHP未経験者が初案件で即戦力になるために(後編)

# 対象
こちらの記事はLaravel/PHPエンジニアとして初めて案件に参画する方に向けて作成しております。

# はじめに
[前回の記事](https://qiita.com/Jasco/items/fc979c1b1b6fbe485d8d)は読んでいただけましたでしょうか?
初案件参画に向けて、後編もどんどん見ていきましょう!!

# 全体項目

## 【前編】
[別の記事](https://qiita.com/Jasco/items/fc979c1b1b6fbe485d8d)にて掲載しております。
| 項番 | タイトル |
|:—:|:————-|
| 1 | 正規表現 |
| 2 | git |
| 3 | SQL |
| 4 | HTML&CSS |
| 5 | JS |
| 6 | JSフレームワーク |

## 【後編】

| 項番 | タイトル |
|:—:|:————-|
| 7 | [PHP](#php) |
| 8 | [Laravel](#laravel) |
| 9 | [Excel](#excel

元記事を表示

【これだけはやっとけ】Laravel/PHP未経験者が初案件で即戦力になるために(前編)

# 対象
こちらの記事はLaravel/PHPエンジニアとして初めて案件に参画する方に向けて作成しております。

# はじめに
未経験エンジニアの皆さん、
初めての案件…不安ですよね…

(詳しい事情はお察ししますが)
未経験なのに、**なぜか**客先に熟練の即戦力として見込まれ、
案件に参画することになった方々…沢山いると思います。(笑)

そんな自分も未経験から初めて入った案件では、
Laravel/PHPを使った既存システムの保守改修、及び、新卒社員のPHPの教育係でした。(?)

エンジニアとして働いて2年程経った現在、改めて初案件を振り返ってみて、
案件参画までに、最低限これだけは勉強したほうがいい、ということをまとめてみました!
(ほぼ書籍で勉強していたので、書籍紹介が多めです)

ここに書いたことを案件参画までに確りと学習していれば、
恥をかかないどころか、十二分に即戦力として働けると思います!!
是非参考までに挑戦してみてください!

# 前提
「最低限」とは言っていますが少し量があるので、
下記前提の元、学習を進めていっていただければと思います。
・**1

元記事を表示

OTHERカテゴリの最新記事