かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

PHP

さくらのレンタルサーバーに直接 Laravel をインストールする

こちらの Laravel の環境をつくる勉強会に参加してしました。localで作った環境を さくらのレンタルサーバー にアップするというものだったので、ssh でサーバーに入って直接環境を作れないか試して見たメモ ssh でさくらのレンタルサーバーに接続する方法は…

Docker nginx + PHP7 + MySQL8 で Laravel 触れる環境つくってみた

構成 /-- docker-compose.yaml |- /docker | |- /php | |- /nginx | |- /mysql | |- /data # MySQLのデータの永続化 |- /laravel # Laravel アプリがインストールされるディレクトリ 使い方 https://github.com/KiKiKi-KiKi/docker-laravel からコードをDLし…

React axios でファイルアップロードしたい

フロントを React バックエンドを PHP で作成していて、ファイルのアップロードを試してみたのでメモ File を扱うコンポーネント React では、<input type="file" /> は値がユーザだけが設定できるものでありプログラムでは操作できないため、常に非制御コンポーネントです。 cf. …

PHP 7 変数に値がなければデフォルト値を設定したい。

PHP

PHP で変数のデフォルト値を設定したい時 false の場合デフォルト値を使う 'default' $var = false ?: 'default'; // => 'default' $var = 0 ?: 'default'; // => 'default' $var = '' ?: 'de…

Docker Nginx + PHP + MySQL + Redis な環境作った。

Docker 一年生なので、雰囲気で作っています。 構成 /-- docker-compose.yml |- /web | |- /html … web root |- /mysql | |- Dockerfile | |- my.conf | |- /init | |- 1_dd.sql … DB 初期化 |- /nginx | |- nginx.conf | |- /log | |- access.log | |- erro…

生PHPで application/jsonで送られたデータを取得したい

Content-Type application/json で送られてくるデータを生 PHP で取得する場合のメモ フレームワーク使ってたら、この方法を使うことは無さそうだけど、メモとして… こんな感じのフロントから送られるデータを扱いたい const data = { email: 'example@examp…

JavaScript (SPA) PHP axios でフォームデータを送る時に気をつけること

$_POST や filter_input でデータを取得しているようなPHPのバックエンドにフォームデータを axios で送信する時 Content-Type を application/x-www-form-urlencoded にするだけでは上手くいきません。 ‍♀️ Content-Type: application/x-www-form-urlencode…

PHP 名前空間 (namespace)付きのメソッドを可変関数 (文字列) で呼び出したいハマる

PHP

PHP で FastRoute を使って API のモックを作っていていました。 cf. GitHub - nikic/FastRoute: Fast request router for PHP addRoute('GET', '/api', 'handler'); }); // Fetch method and URI from somewhere …

Docker PHP composer を使えるようにしたい。

旋回までのあらすじ Docker で作った PHP 環境で composer を使おうとしたら入ってなかったので使えるようにしたメモ docker-compose.yml version: '3' services: api: build: context: ./php dockerfile: Dockerfile volumes: - ./api:/var/www depends_on:…

Docker nginx + PHP (PDO) + MySQL + frontend な SPA 開発環境作った

インフラ知識皆無なので Docker は雰囲気で使っています。 構成 / |- docker-compose.yml |- /api |- /frontend | |- Dockerfile |- /mysql | |- /data | |- /init | | |- 1_ddl.sql | |- Dockerfile | |- my.cnf |- /nginx | |- nginx.conf |- /php |- Dock…

MySQL カラム名にハマる

バグ踏みの達人です。 PHP から MySQL のデータを更新しようとして珍しいバグを踏んだのでメモ 何故かエラーになる あるテーブルに次のようなコードでデータを入れようとしたらエラーになりました。

PHP 定数を文字列展開させたい。

久々に PHP 書いてます。 なんも覚えてねぇ… PHP は定数は文字列展開できない。 PHP " (ダブルコーテーション) な文字列なら下記のように変数を文字列展開できるかと思います。 "INSERT INTO users (id, name …)"; 定数は展開されない… …

Mac OS Catalina PHP インストールにハマる (phpenv諦めてphpbrew)

Mac OS Catalina にアップデートして Composer を使おうとしたら動作しなくなっていました… ( Catalina 開発トラブル多すぎない?) PHPを再インストールしたら動くという情報を目にしたので、折角なので phpenv でインストールをしようとしたのですが、永遠…

WordPress PHP7.3にしたらデフォルトテーマでno more memoryってWarningが表示された件

PHP7.3のバグphp.iniでコメントアウトされてる `;pcre.jit=1` を `pcre.jit=0`として有効にすればOKっぽい。(今の所...

WordPress PHP 7.x でデータベース接続確立エラー

php.iniを開いてdefault_socketをチェックしよう。WordPressはmysqli.default_socketが設定されてないとデータベース接続確立エラーになるみたい。

WordPress pre_get_posts内でSQLをカスタムするフィルターを使う時に注意すること

※ この記事は古いWordPress (v4.1)を触っていて発生した現象なので、新しいWordPress環境では発生しない可能性があります。

WordPress 管理画面の固定バー(Admin bar)にカスタムボタンを設置したい

WordPress管理画面の上部にあるAdmin barにカスタムボタンを設置する方法のメモ functions.php 'my_custom_button', 'title' => '表示される文字', 'href' => '#', 'meta' => [ 'class' => '' ], ]; $wp_admi…

PHP phpbrewで古い環境のPHPを動作させたメモ

別の人が作成した古いWordPressの改修の依頼が来て、環境つくりに時間がかかったのでメモをしておきます。 レンタルサーバーで動いているサイトだったのでPHP + Apache + MySQLという構成です。 要件

PHP / JavaScript ファイル生成してDLさせたいけどmax_input_varsにかかってしまう問題にパワープレイで立ち向かった話

PHP製の管理ツールで、CSVを生成してDLするシステムを作っていました。 データ量が多いとエラーになるということで調べたら、PHPのmax_input_varsにかかって居るのが原因でした。 そして、使っているサーバーがhetemlでmax_input_varsの上限を変えることが出…

PHP マークダウン変換できるライブラリParsedown使ってみた。

WordPressのカスタムフィールドで作っていたテキストエリアで部分的にボールドにしたいという要望がありました。 運用してる人的にHTML書いてくださいってのはハードル高そうだし、カスタムフィールドをWYSIWYGにするのは工数もかかるし自由に出来すぎるとwo…

Mac OSX 開発環境セットアップのメモ (6) ApacheでPHPが動くようにする

PHPはphpbrewでインストールしました。 Macにデフォルトで入っているapacheを起動しないようにする $ sudo apacehctl stop $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist homebrewでインストール 以前はhttpd24という名…

Mac OSX 開発環境セットアップのメモ (5) phpbrewでPHPをインストール

フリーランスのお仕事だとレンタルサーバーにWordPressでホームページ作りたいってのがまだまだ多いのです。 MAMPやXAMPPはサーバーもセットで簡単にインストールできるのですが、稀にお客さんの用意しているレンタルサーバーのPHPとMySQLのバージョンが違っ…

WordPress pre_get_posts・WP_Query 別々の条件で記事を取得したい

WordPressのWP_Queryやpre_get_postsアクション内で投稿を取ってくる時に、一緒にできない複数の条件(複数のSELECT文が必要な条件)で投稿を取得したいような時のメモ。 メインループ外の場合は2回WP_Queryを実行(SQLを発行)してそれぞれ取得したデータの配列…

WordPress MySQL 特定のカスタムフィールドの値が存在しない投稿を取得したい。

WordPressのデータベースでは、カスタムフィールドの値は{$pre_fix}postmetaテーブルに登録されます。 postmeta テーブル +------------+---------------------+ | Field | Type | +------------+---------------------+ | meta_id | bigint(20) unsigned | …

PHP if文の条件の判定順

if文の中に&&や||で条件を複数入れた時にどちらから処理されるか、PHPは左からであってると思ったけど、何か右から判定するのが合った気がしたので念のため調べてみました。 次のような関数を作成して、この関数を条件にすれば、出力結果から左右どちらから…

Wordpress CMB2 1行text(input)フィールドでHTMLタグを入力できるようにしたい。

WordPressにコードベースでカスタムフィールドを作成することが出来るCMB2。 とても便利なのですが、 1行textフィールド(通常のinput[type="text"])はデフォルトだとHTMLタグを保存時に除去(sanitization)する仕様になっていました。(以前はサニタイズされて…

PHP 配列のキー・Objectのキー(プロパティ)の有無をチェックしたい。

PHP

配列のキーの有無のチェック

PugでPHPタグを出力したい

pugはHTMLテンプレートエンジンなのですが gulp などで拡張子をリネームしてしまえば PHPのテンプレートファイルにする事もできます。 ex: var gulp = require("gulp"), plumber = require("gulp-plumber"), rename = require('gulp-rename'), pug = require…

PHP A~Zを簡単に出力したい。

PHP

range() 関数を使う range range — ある範囲の整数を有する配列を作成する array range ( mixed $start , mixed $end [, number $step = 1 ] ) string(1) "A" [1]=> string(1) "B" [2]=> string(1) "C" [3]=> string(1) "D" [4]=> string(1) "E" [5]=> stri…

Ajaxを使ってWordPressからコンテンツを取得したい。

WordPress製のサイトに独自のコンテンツなどを取得できるAjaxを作成する方法のメモ 1. 呼び出すアクション名を決める 2. Ajaxの送信先をjsから使えるように出力する 3. Ajaxで呼び出される関数を作成する (PHP) 4. フロントからAjaxでの呼出しを作成する (ja…