- 0.0.1. Drupalの管理画面ダッシュボードをリッチにするContent Plannerモジュール
- 0.0.2. やっと分かった「インスタンス化」
- 0.0.3. 【PHP】session_start(): Failed to read session data: user (path: /var/lib/php/session) in …が発生したときの対応
- 0.0.4. composer self-updateできない
- 0.0.5. command not found:phpを解消する
- 0.0.6. League/Csvで5C問題を回避してCSVを読む
- 0.0.7. WSL2(Ubuntu)でPHP + MySQL環境を構築する①
- 0.0.8. PHPで発生したエラーを画面に出力する方法
- 0.0.9. phpenv update でPHPの最新のバージョンが反映されない
- 0.0.10. Zoomのブレイクアウトルームってダサくない??
- 0.0.11. 【HTML】【PHP】で取得した日付フォーマットの変更の仕方について
- 0.0.12. PHPで数値をアルファベットに変換するchr関数とord関数
- 0.0.13. PHPUnit用テストDB設定方法
- 1. PHP Unitでテストを行うためのテスト用DBを導入するまで
- 1.1. 手順概要
- 1.2. 手順詳細
- 1.2.1. MySQLにてテスト用DB作成
- 1.2.2. config/database.php変更
- 1.2.3. LaravelとAmazon SES を使ってメールを送ろう!
- 1.2.4. 【php MyAdmin】 「エラー SQLクエリ:コピー」が表示された
- 1.2.5. baserCMSのページネーション(ページャー)のカスタマイズ
- 1.2.6. MarinDBのdelimiter
- 1.2.7. 【備忘録】Instagram Graph APIを使用してWEBページに正方形の画像を埋め込む
- 1.2.8. WordPressのmeta_queryを使って、指定値がmeta_valueに保存された配列に含まれるものを抽出したい
- 1.2.9. 1つのカスタム投稿に複数のタクソノミーを設定する
Drupalの管理画面ダッシュボードをリッチにするContent Plannerモジュール
WordPressや他のITツールを使ったことがある方であれば、管理画面にログインをしたらダッシュボードが表示されるということに慣れているのではないでしょうか?
それに対してDrupalはログイン後にはフロント画面のトップページが表示され、ページ上部に管理用のナビゲーションが表示されます。訪問者が実際に見る画面でコンテンツの作成・編集が行える利点があるものの、「ログインしたらダッシュボードが見たい!」といったユーザー向けに「Content Planner」が利用できるので紹介します。
# Content Plannerモジュールでできること
Content Plannerは以下の3つの機能があります。
1. コンテンツ状態ダッシュボード
2. 公開予定カレンダー
3. Kanbanボード## コンテンツ状態ダッシュボード
コンテンツ状態ダッシュボードはコンテンツの状態(下書き中の記事が5件、レビュー中の記事が2件、等)や、最近公開されたページ一覧、今後公開される記事一覧に加え、任意の情報やViewを埋め込むことができる画面です。
CMS内のコンテンツ作成作業の状況が一目
やっと分かった「インスタンス化」
##■よく分かんないけどnewする
プログラミングを始めてから、ずっと分からなかったんです。
インスタンス化。
なんだかよく分かんないけど、
newしないとできないことがあって、
newするとできるようになることがある。
どうやらこれがインスタンス化って言うらしい。
ふーん?
newするって何なの…って思いながらいつもnewしてました。調べると記事は色々出てきますよね。
設計図を実体化するみたいな感じ、とか大体そんなふうに。ふむふむなるほど、、、、
**わ〜、全然ピンと来ないなあ** ?あ、決してわたしの見た記事がダメだったとかそういうことはなくて
わたしの理解力のなさがピンと来なかった原因なんですが、
つい先日ようやく開眼(?)いたしまして、
今回はそれを記事にしたいと思います。##■インスタンス化っていうのは
思ったんですよ。
インスタンス化っていうのはもしかして、**召喚獣を召喚するのと同じなんじゃない?? ** って。
いきなり召喚獣とか言い出して大丈夫でしょうか。
大丈夫です。
(あまりゲームに馴染みのない方には意味不明ですね、すみません汗)さ
【PHP】session_start(): Failed to read session data: user (path: /var/lib/php/session) in …が発生したときの対応
# はじめに
セッションハンドラでセッション管理をしていたときに**session_start()**を呼び出すと下記エラーが発生。“`
session_start(): Failed to read session data: user (path: /var/lib/php/session) in …
“`
本記事ではエラーの原因、解決方法を備考録としてまとめております。# 原因
####セッションハンドラ実装の流れ
* session_set_save_handler関数を定義
関数の説明は[公式](https://www.php.net/manual/ja/function.session-set-save-handler.php)を参照* session_set_save_handler関数にSessionHandlerInterfaceインタフェースを実装したクラスのオブジェクトを渡す
* SessionHandlerInterfaceを実装するには、以下の6つのメソッドを実装する1. “close(): bool“
1. “destroy(s
composer self-updateできない
##はじめに
環境変数の設定中に、phpdotenvというライブラリを導入する際に、複数のエラーにハマったので、備忘録として残します。##現状①
– phpdotenv導入のために、下記コマンド入力後に、Composer2へアップデートして下さいとのエラーが出ている状況。
“`
docker-compose exec app composer require vlucas/phpdotenv
“`
“`
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2 is now available and you should upgrade. See https://blog.packagist.com/deprecating-composer-1-support/
“`– [https://blog.packagist.com/deprecating-composer-1-support/](https://blog.pack
command not found:phpを解消する
##はじめに
phpのバージョンを確認するコマンドを入力した際にエラーにハマったので、備忘録として残します。
##現状
– `php -v`入力後に下記エラーが出ている現状。
“`
$ php -v
zsh: command not found: php
“`##原因
– パスの通し方が間違っていたのが原因でした。
##対応
– まずは、phpのパスを調べる。
“`
brew –prefix php@7.4
“`
– 私の環境では、`usr/〇〇/opt/php@7.4`なので`/Users/ユーザー名/.zshrc`を編集します。`cat`コマンドを使用して、現在の設定を確認します。“`
cat ~/.zshrc
“`– `vi`コマンドでパスを編集します。編集方法は、`i`を押して、インサートモードに入る。`esc`を押して戻る。`:w`で書き込みをして、`:q`で終了する
“`
vi ~/.zshrc
“`“`
export PATH=(brew –prefix php@7.4で返ってきたパス)bin:$PATH
“`
–
League/Csvで5C問題を回避してCSVを読む
PHPのCSV操作ライブラリ[League/Csv](https://csv.thephpleague.com/)では文字コードがShift-JISのCSVを読むことができますが、5C問題のためにフィールドがうまく区切られない場合があります。**5C問題**はShift-JIS固有の問題で、バックスラッシュとして解釈される`0x5c`が一部の文字コードの先頭に含まれることに起因する問題を指します。これを発生させる文字はいわゆる[ダメ文字](https://sites.google.com/site/fudist/Home/grep/sjis-damemoji-jp)として知られており、例として「貼」「表」「能」などが挙げられます。
この記事では、League/Csvを利用してCSVを読む際に5C問題を回避する方法について記します。記事中で利用するLeague/Csvのバージョンは9.8.0、PHPのバージョンは8.1.0となります。
## フィールドをうまく区切れない例
読み込むCSVファイルが– 文字コードがShift-JISである
– ダメ文字がエンクロージャの**直前**
WSL2(Ubuntu)でPHP + MySQL環境を構築する①
WSL2(Ubuntu)を使用して、Windows上にLinuxの仮想環境を構築し、PHP + MySQLの開発環境を整えます。
本稿は2部構成となっております。第1部では、WSL2・Ubuntuをインストールして、Linux環境を構築するところまで進めます。# 前提条件
– Window10環境
– 当記事は2022年1月時点の情報に基づいて、執筆しています。WSL関連の情報は頻繁にアップデートされているようですので、実行前に公式ドキュメントを確認することをお勧めします。
– 公式ドキュメント : https://docs.microsoft.com/ja-jp/windows/wsl/install# Windowsのバージョン確認
作業に入る前に、まずはWindowsのバージョンを確認しておきましょう。
`Windowsキー` + `R`でファイル名を指定して実行画面を開きます。名前欄に`winver`と入力してOKをクリックすると、Windowsのバージョン情報が確認できます。
![2022-01-16 (16).png](https://qiita-image-sto
PHPで発生したエラーを画面に出力する方法
PHPのエラーをブラウザに表示させる方法
“`
sudo vi /etc/php.ini
“`「/display」で検索
「エラーをHTML出力の一部として画面に出力するかどうか」の設定。OffをOnに変更。
“`
display_errors = Off → display_errors = On
“`「display_errorsをOnにしても、自分で書いた?>内のプログラムエラーしか表示しませんよ」という設定。OffをOnに変更。
“`
display_startup_errors = Off → display_startup_errors = On“`
phpenv update でPHPの最新のバージョンが反映されない
“`
$ phpenv install –list“`
PHP8系が一覧にない“`
$ phpenv updateerror: Your local changes to the following files would be overwritten by merge:
share/php-build/default_configure_options
Please commit your changes or stash them before you merge.
Aborting“`
エラーがでた。
以下のファイルをgitでcommitかスタッシュすればいいらしい。
面倒なので、default_configure_optionsのファイル名を変更(バックアップ)“`
/Users/[ユーザ名]/.anyenv/envs/phpenv/plugins/php-build/share/php-build/default_configure_options
“`“`
$ phpenv update$ phpenv install —
Zoomのブレイクアウトルームってダサくない??
# はじめに
私は現在大学4回生で論文のための実験をしているのですが、このご時世のため実験もオンラインで行うことになりました。
私の実験ではGoogle Formを使って協力者に動画の視聴→アンケート→テストという流れを2回繰り返すことでした。(下図が実験の流れ)![スクリーンショット 2022-01-14 0.15.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156096/a5cae123-910f-3527-2cec-a967a0025cd4.png)
私は実験の協力者を募るため、教授の力を借り、Zoomでのオンライン授業で募集することになりました。
ここで問題が発生です。
上記の場合、Google FormのURLが4つあります。
どうやって4つのURLを均等に協力者に振り分けようかと私は思いました。* 4つブレイクアウトルームに分かれてそれぞれに異なるリンクを貼る。→ 私がルーム毎に入退室を行う必要がある。時間がかかる。めんどくさい。
* 学籍番号を4で割った余り、学籍番号
【HTML】【PHP】で取得した日付フォーマットの変更の仕方について
#背景
カレンダーを作成中、予定を入力したときにカレンダー内に表示させようとしたところ、日付のフォーマットが違ってif文が働かなかったので、同じところで悩まないように備忘録兼ねて作成#やりたかったこと
“`php:日付を取得するフォーム
Document
“`
![スクリーンショット 2022-01-15 18.26.18.png](https:
PHPで数値をアルファベットに変換するchr関数とord関数
#PHPで数値をアルファベットに変換する方法
先日、PHPを勉強していてchr()関数とord()関数で、はまってしまったのでまとめておきます。
##chr()関数とは>この関数は、ASCII, ISO-8859, Windows1252のようなシングルバイトエンコーディング においては、文字セットのマッピングテーブルにある望みの文字の位置を渡すことで、一文字の文字列を作り出すのに使えます。しかし、この関数は stringのエンコーディングについて知りませんし、特にUTF-8やUTF-16のようなマルチバイトエンコーディングについては、この関数にUnicodeのコードポイントは渡せないことに注意してください。
つまり、シングルバイトエンコーディングに登録されている文字セットを、ユーザによって指定されたINT型の数値によって、対応している文字列(英数字か記号のみ)を返す関数であるといえます。
###ASCII(アスキーコード)とは
コンピュータは0か1かの2進数でしか認識できません。もちろん、ユーザは文字を扱う為それではコンピュータとやりとりができません。そこで、文字をコンピュー
PHPUnit用テストDB設定方法
PHP Unitでテストを行うためのテスト用DBを導入するまで
Laravel開発にてテスト行う際は、PHP UnitというPHP用のユニットテストプログラムが標準で組み込まれており、テストコードを記述するとテストを実行してくれるとのこと。
早速PHP Unitにてテスト実行するためのテスト用DBを作成・設定したのでまとめます。手順概要
1. MySQLにてテスト用DBを作成
1. config/database.php変更
1. .env.testing作成
1. phpunit.xml変更手順詳細
MySQLにてテスト用DB作成
mysqlに接続し、以下コマンドでテスト用DBを作成
“`sql:
create database TestDababase;
“`config/database.php変更
laravelプロジェクト内のconfigフォルダ下にあるdatabase.phpに使用するDB定義を追加します。
connections配列の中にあるmysqlの内容を丸々
LaravelとAmazon SES を使ってメールを送ろう!
## はじめに
タイトルの通り、とても簡単にLaravelとAmazon SESを使ってメールを送ることができます。
記事自体は長いのですが作業自体は特に難しくありません。
Laravel使ってメールを送りたいと考えている方(そうでない方も笑)、ぜひ記事に目を通していってください!**著者の環境**
– Laravel 8.78.1
– PHP 8.0.8## 本記事の概要
#### ゴール
アプリから以下のようなメールが送信できることを目標にしていきます。|項目|説明|
|:–|:–|
|from|mail@test-ses.tk|
|fromの表示名|アプリ名|
|to|アプリにて指定した宛先|#### やること
メールを送信するために以下のステップを踏んでいきます。
もしご自身にとって不要なステップがあったら飛ばしてください。– [IAMユーザーの作成](#iamユーザーの作成)
– [SESの設定](#sesの設定)
– 独自ドメインの取得
– SESの設定
– サンドボックス外への移動
– [Laravelの設定](#lara
【php MyAdmin】 「エラー SQLクエリ:コピー」が表示された
今回、初めての投稿になります。何卒宜しくお願い致します。
現在XAMMPを使ってPHPを勉強しているのですが、パソコンの不具合が生じたので、新しいパソコンに移動することになりました。
そこで新しいパソコンにデータを移動したときに下記のようなエラーが表示されました。
![その7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1203654/43b153d2-c992-47a4-e5a3-021ad98c62c4.png)##エラー
__SQLクエリ:コピー__
とのことです。そこでもう一度phpmyadminのsqlデータを移動する方法をまとめてみました
__[PC環境]__
● 故障したPC → window10 64ビット
● 新しく入れるPC → window10 64ビット (故障したPCとおなじものになります)主な流れを書くと次の通りになります。
__1、 前のパソコンからSQLデータをエクスポートする__
__2、 新しいパソコンでXAMMPをインストールする__
__3
baserCMSのページネーション(ページャー)のカスタマイズ
baserCMS公式の、ページネーションのドキュメントが少ないので、私が把握していることをまとめます。
## 基本的な使い方
baserCMSでは「ブログ」のアーカイブページでページネーションが使用できます。
pagination関数が提供されています。“`php
BcBaser->pagination(); ?>
“`https://wiki.basercms.net/ver4/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/BcBaser_pagination
## 引数と出力内容
pagination関数には「出力するHTML」を変更する第1引数`$name`があり、テーマ側で何もしていなければ(後述)、受け付ける引数は3種類です。
CSSのみでカスタマイズするのであれば、ordered_listで良いかと思います。### default(または引数なし)
“`php
BcBaser->paginatio
MarinDBのdelimiter
# delimiterについて
この記事は主の備忘録用の物です。
投稿初期のものなので、諸々許してください。## 目的
MariaDBで、;を実行コマンドとして機能させないように、delimiterをつかおうと思ったのですが、すこし手こずりましたので、その解決方法の共有です。### エラーの内容
”’
MariaDB [test_db]> delimiter//
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘delimiter//’ at line 1
”’### 解決方法
解決方法はいたってSimpleでした。delimiterを大文字で使う
たったこれだけです。
以上でした。
【備忘録】Instagram Graph APIを使用してWEBページに正方形の画像を埋め込む
Instagram Graph APIを使用してInstagramの画像をwebページに埋め込む際に、少し手間取ったので備忘録として。
#実現したいこと
Instagram Graph APIを利用してInstagramから取得した画像をwebページに埋め込み、正方形のグリッド状に配置したい。#実装
Instagramのプロアカウント作成からwebページへの埋め込みまではこちらを参考に行った。#実装後に起きた問題
1. 画像が表示されない。
2. 画像をクリックしても投稿に飛ばない。
3. 取得された画像サイズが正方形ではないのでレイアウトが崩れる。#原因
###画像が表示されない。
* phpファイル内のGraph APIのバージョンが最新ではなかった。
* 目的のInstagramアカウントの投稿数が、Graph APIで取得する数(javascriptファイルの`photo_length`の値)より少なかった。
* javascriptファイル内の
WordPressのmeta_queryを使って、指定値がmeta_valueに保存された配列に含まれるものを抽出したい
WP_Queryのmeta_queryでin_array()的なことをしたくて探してたら
Stack Exchangeで見つけたので紹介します。単純に以下のように書く場合
“`php
$args = [
‘meta_query’ => [
[
‘key’ => ‘hoge’,
‘value’ => $id,
‘compare’ => ‘IN’
]
]
];
$query = new WP_Query($args);“`
「DBに保存されている値が配列$idに含まれる場合」
という意図と逆の意味合いになってしまいます。「$idがDBに保存されている配列に含まれる場合」という場合、
シリアライズ保存されたデータからLIKEを使って文字列で抽出するしかないそうです。
ただ$idが数字の場合、単に文字列化しても誤抽出が起こりやすいので、
こちらもシリアライズして前後の記号も含めLIKE抽出します。“`php
$args = [
‘meta_qu
1つのカスタム投稿に複数のタクソノミーを設定する
![タクソノミ複数.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/552308/20841d2d-1874-5e7d-4dc0-a97a3ff3963b.png)
●スラッグ
「レッスン」 → lesson
「ギター」 → lesson_guitar
「ベース」 → lesson_bass
「ドラム」 → lesson_drum“`php:functions.php
//カスタム投稿タイプ追加
register_post_type(
‘lesson’, //カスタム投稿のスラッグ
array(
‘label’ => ‘レッスン検索’, //管理画面に表示される名前
‘hierarchical’ => true,
‘has_archive’ => true,
‘public’ => true,
‘menu_position’ => 5,
‘supports’ => array(‘title’,’editor’),
‘exclude_from_search’ => false,
));
//カスタムタ