- 1. 1.Call to undefined function mysqli_connect()はmysqliのインストールで解決
- 1.1. Centos7でZabbixを建てる
- 1.2. Laravel Auditingのログがクエリビルダのイベントでは記録されない
- 1.3. $_POST、$_GET
- 1.4. PHPでファイルを操作する際にファイルの権限によって書き込み・読み取りができなることがある件
- 1.5. (JSPsych不要)生PHPと生JavaScriptで書く心理実験刺激入門
- 1.6. 【docker】phpdotenvで.envが読み込めないのでディレクトリを変えた
- 1.7. laravel breezeでマルチログインのタスク管理ツールを作る①_下準備(seederでダミーデータ作成まで)
- 1.8. HTTPクライアントGuzzle
- 1.9. PHPSandboxで、laravelのmiddlewareの練習①_権限テーブル作成、ダミーデータでログインまで
- 1.10. 多言語翻訳プラグインGTranslateの導入方法
- 1.11. phpsandboxでlaravel breezeを練習(usersテーブル、ダミーデータの作成まで)
- 1.12. apacheにphpとmysqlを入れる
- 1.13. 【これだけはやっとけ】Laravel/PHP未経験者が初案件で即戦力になるために(後編)
- 1.14. 【これだけはやっとけ】Laravel/PHP未経験者が初案件で即戦力になるために(前編)
- 1.15. DateTimeクラス
- 1.16. PHPの学習と最初のつまずき
- 1.17. PostmanからのPOSTをPHPの$_POSTで受け取る方法
- 1.18. 【PHP】出力にはechoとprint、どっちを使えば良い?
- 1.19. ジェネレーター
【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
ポストデータ
こんにちは、=e($_POST['name']) ?> さん!
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 hostaddrhostip=”[ユーザー名]@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:8phpdotenvは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で使用できる無料プラグインのこと。簡単操作で日本語を英語や中国語、韓国語に変換できる。## 導入方法
### ブロックテーマでの導入方法
既存テーマを使用する場合は、外観→ウィジェットから簡単に追加できます。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
DateTimeクラス
## はじめに
DateTimeクラスに関して整理する。
### DateTimeクラスとは
日付/時刻の演算や整形を行うためのクラス。
### 現在の日付/時刻から生成
“`php.datetime_now.php
$now = new DateTime();
print $now->format(‘Y年m月d日 H:i:s’); // 2024年4月14日 12:00:00
“`### 日付/時刻文字列から生成
“`php.datetime_strtotime.php
$now = new DateTime(‘2024/04/14 12:00:00’);
print $now->format(‘Y年m月d日 H時i分’); // 2024年4月14日 12時00分
“`### タイムゾーンを指定する
“`php:datetime_tz.php
$dt1 = new DateTime(null, new DateTimeZone(‘Asia/Ulan_Bator’));
print $dt1->format(‘Y年m月d日 H時i分’); //2024
PHPの学習と最初のつまずき
#最近PHPの勉強を始めてつまずいた点についてお話します。
Windowsのエクスプローラーでindex.htmlをダブルクリックして立ち上げたら、
PHPが実行されずにブラウザにそのまま表示された。#解決策
ブラウザのアドレスバーに、
http://localhost/phpfolder/index.html
と打って表示させたら正しく表示された。以上です。
PostmanからのPOSTをPHPの$_POSTで受け取る方法
## はじめに
備忘録
タイトルの通りです。
どなたかのお役に立てれば幸いです。## 方法
Postmanのリクエスト設定画面で、`Body`タブの中の`x-www-form-urlencoded`にキーと値を設定することにより、`$_POST`で受け取れるようになります。
【PHP】出力にはechoとprint、どっちを使えば良い?
# はじめに
こんにちは! 中学3年生のWardHamamatsu67です! 今回は、PHPの出力に使う、echoとprint、結局どっちを使えば良いのかを、比較して決めたいと思います。
## 引数
### echo
echoは引数が複数でもOKなので、複数の文字列をつなげるときには、”,”でつなげてもよし、”.”でつなげてもよしです。
printは引数が1つのみなので、複数の文字列をつなげるときには、”.”でしかできません。echo-print
1-0
## 文字数
### echo
echoは4文字です。
printは5文字です。echo-print
2-0
## 早さ
### echo
やや早め
やや遅めecho-print
3-0
## 戻り値
### echo
echoは戻り値がありません。
printには戻り値を返します。echo-print
3-1the end
# 結果
どちらを使ってもよいですが、とりあえず、echoを使っておけば問題ないと思います。
# おわりに
とい
ジェネレーター
## はじめに
ジェネレーターに関して整理する.
### ジェネレーターとは
yield命令を使ってその時どきの値を返せる関数。
returnでは値を返したらそれで終わりだが、yieldは関数の値を呼び出し元に返した後で
処理を一時停止する。次に呼び出された時にはその時点から処理を再開できる。### 実例
素数を求めるジェネレーターの例。
“`php:gen_prime.php
function getPrimes()
{
$num = 2;
while (true) {
if (isPrime($num)) {
yield $num;
}
$num++;
}
}function isPrime(int $num)
{
$prime = true;
for ($i = 2; $i <= floor(sqrt($num)); $i++) { if ($num % $i === 0) { $prime = false