Grilled Cheese

ExploreLog inSign up
Terms of UsePrivacy PolicyCommunity StandardsHelpGet the app

Grilled Cheese is a product of Village Compute

Version devBuilt at: 2026-10-20 22:39:34 EDT

PhotosVideosAllPeople
LatestRanked
@i-t-tan.bsky.socialOct 6, 2026, 7:33 PM

#このアカウントのハッシュタグ一覧 3

Web技術:
#JavaScriptを学ぶ
#PHPでコーディング
#cakephpのメモ
#データベースのメモ
#ブラウザの知識
#ブラウザの自動操作

開発の基盤技術(Gitなど):
#Markdown記法を覚えよう
#文字コードの知識

@legacy-it-tan.bsky.socialSep 30, 2026, 8:09 PM

#このアカウントのハッシュタグ一覧 3

Web技術:
#JavaScriptを学ぶ
#PHPでコーディング
#cakephpのメモ
#データベースのメモ
#ブラウザの知識
#ブラウザの自動操作

開発の基盤技術(Gitなど):
#Markdown記法を覚えよう
#文字コードの知識

@legacy-it-tan.bsky.socialSep 28, 2026, 7:38 PM

#cakephpのメモ 21

chmod -R 777 tmp
をしてあるのに
「cacheフォルダに書き込む
 パーミッションが無い」
というエラーが消えない場合
原因は?

Linux OS上で
getenforce
して状態を確認。
setenforce 0
すれば解決。

この現象は,
サーバが再起動した直後に起こりやすい。

@legacy-it-tan.bsky.socialSep 28, 2026, 8:10 AM

#cakephpのメモ 20

CakePHPからgmailでメール送信 (4)

cake側からメール送信処理を実行すると
受信側では初回は
「迷惑メール」フォルダ内にメールが届く。

「Gmailでは,このメールが本当に~から送られたものであることを確認できませんでした。」
→迷惑メールでないことを報告すればOK。

@legacy-it-tan.bsky.socialSep 27, 2026, 9:09 PM

#cakephpのメモ 19

CakePHPからgmailでメール送信 (3)

コントローラ内で
use Cake¥Mailer¥Email;

(new Email('default'))
->setFrom(['送信者@ gmail.com' => '送信者名'])
->setTo('送り先@ gmail.com')
->setSubject('タイトル')
->send('本文¥n¥n改行');

@legacy-it-tan.bsky.socialSep 27, 2026, 12:08 PM

#cakephpのメモ 18

CakePHPからgmailでメール送信 (2)

config/app.phpで
'EmailTransport' => [
'default' => [
…
'host' => 'ssl://smtp.gmail.com',
'port' => 465,
'username' => "めあど@ gmail.com",
'password' => "XXXXXXXX",
'transport' => "smtp",
'tls' => null, …

@legacy-it-tan.bsky.socialSep 27, 2026, 3:08 AM

#cakephpのメモ 17

CakePHPからgmailでメール送信 (1)
gmail側の設定

gmailをPCのブラウザで開き
右上のアイコン
→「Google アカウントを管理」
→左サイドバーの「セキュリティ」
→「安全性の低いアプリのアクセス」をONにする。

@legacy-it-tan.bsky.socialSep 26, 2026, 7:08 PM

#cakephpのメモ 16

src/Shell内のシェルクラスでは…

・$this->loadModel('モデル名') によって
Modelクラスを呼び出し,DB操作できる。

・日時出力
echo ( new ¥DateTime() )->format('Y-m-d H:i:s');
DateTimeの前に
名前空間を指す¥が要る点に注意。

@legacy-it-tan.bsky.socialSep 26, 2026, 6:08 AM

#cakephpのメモ 15

コマンドラインから
シェルクラスを起動する際,
引数を渡せる。

CUIから
bin/cake hoge_fuga 123

class HogeFugaShell extends Shell
{
public function main(){
// シェル起動引数の文字列
$arg0 = isset( $this->args[0] ) ? $this->args[0] : null;

→"123"

@legacy-it-tan.bsky.socialSep 25, 2026, 5:38 PM

#cakephpのメモ 14

crontab -e

# 分・時・日・月・曜日・コマンド
# 毎時毎分にログ出力する
* * * * * /var/www/html/(ドメイン名)/public/cake/bin/cake hoge_fuga >> /home/root/cron.log

これで,src/Shell 内の
HogeFugaShell.php内のmainメソッドが
CRONジョブとして実行される。

@legacy-it-tan.bsky.socialSep 25, 2026, 6:09 AM

#cakephpのメモ 13

CRONジョブや
CUIで動くアプリを作る手順 (2)

src/Shell 内に
HogeFugaShell.php で
class HogeFugaShell を定義し,
main メソッドを書いたら…

cakeのプロジェクトフォルダ上で
bin/cake hoge_fuga
というコマンドを実行すると
CUIで main メソッドが実行される。

@legacy-it-tan.bsky.socialSep 24, 2026, 3:38 PM

#cakephpのメモ 12

CRONジョブや
CUIで動くアプリを作る手順 (1)

src/Shell 内に
HogeFugaShell.php

namespace App¥Shell;
use Cake¥Console¥Shell;

// 動作テスト用のバッチ
class HogeFugaShell extends Shell
{
public function main(){
echo "Hello, World!";
}
}

@legacy-it-tan.bsky.socialSep 24, 2026, 4:38 AM

#cakephpのメモ 11

部分的なテンプレートを
エレメントという位置づけで使いまわせる。
src/Template/Element/_hoge.ctp

他のctp内から呼び出し
echo $this->element('_hoge', [
"fuga" => 1
]);
→ エレメント内で $fuga という変数を使える。

@legacy-it-tan.bsky.socialSep 23, 2026, 11:38 AM

#cakephpのメモ 10

CakePHP×MySQLで
datetime型のカラムの日時情報を
秒まで表示したいとき,
工夫が必要。
https://blog.s-giken.net/427.h...

ORMからの検索結果に対し
$record->created->i18nFormat("yyyy/MM/dd HH:mm:ss")
これで秒まで表示できる。

DateTime()やstrtotime()だと
秒が0になる。

@legacy-it-tan.bsky.socialSep 22, 2026, 10:09 PM

#cakephpのメモ 9

ORMで検索条件を指定する際,
不等式による範囲指定
https://www.ritolab.com/entry/...

where([
"カラム名 >=" => 1,
"カラム名 <=" => 10
])
のように書く。

日時の範囲指定・比較も同様で
=> の右側に文字列で
"2020-01-01 00:00:00" などを渡す。

@legacy-it-tan.bsky.socialSep 22, 2026, 5:08 AM

#cakephpのメモ 8

SQL文中の "?" に
型を指定して値をbindできる

$conn = ConnectionManager::get('default');
$statement_obj = $conn->prepare($sql);
$statement_obj->bind(["hoge", 1], ["string", "integer"]);
$statement_obj->execute();
$rows = $statement_obj->fetchAll('assoc');

@legacy-it-tan.bsky.socialSep 21, 2026, 2:08 PM

#cakephpのメモ 7

use Cake\Datasource\ConnectionManager;

$sql = <<<EOS
~素のSQL~
EOS;

// SQL実行結果を配列で取得
$conn = ConnectionManager::get('default');
$statement_obj = $conn->prepare($sql);
$statement_obj->execute();
$rows = $statement_obj->fetchAll('assoc');

@legacy-it-tan.bsky.socialSep 21, 2026, 12:09 AM

#cakephpのメモ 6

「ORMで美しく簡潔に書くぞ!」
↓
1レコード=1オブジェクト
記法は$hoge→fuga
↓
その後
「検索条件が肥大化し
ORMメソッドで表現できなくなった…
↓
複雑なSQLを素で書く
↓
1レコード=1連想配列となり
$hoge→fugaを全部
$hoge["fuga"]に書き換えなければならなくなる

@legacy-it-tan.bsky.socialSep 20, 2026, 9:08 AM

#cakephpのメモ 5

モデルクラス内で
新規インスタンスを生成して
DB保存するには…

// 新規
$record = $this->newEntity();

// カラムに値をセット
$record->hoge = "boo";
$record->fuga = 1;
…

// 保存
$this->save( $record );

saveがインスタンスメソッドじゃないの気持ち悪いよね

@i-t-tan.bsky.socialSep 20, 2026, 6:02 AM

#このアカウントのハッシュタグ一覧 3

Web技術:
#JavaScriptを学ぶ
#PHPでコーディング
#cakephpのメモ
#データベースのメモ
#ブラウザの知識
#ブラウザの自動操作

開発の基盤技術(Gitなど):
#Markdown記法を覚えよう
#文字コードの知識

Load more