- 1. 画像アップロードの留意点
- 2. PHPでSORACOM APIを呼び出す
- 3. stripe-phpメモ
- 4. WordPressでプラグインを使わず人気記事ランキングを表示する方法
- 5. 戻り値を変数に保存して扱う方法
- 6. Laravel6.xの日本語化パッケージ
- 7. MySQLが起動できない(動かなくなった) という地獄のエラー(ERROR! The server quit without updating PID file と Fatal error: Can’t open and lock privilege tables: Table ‘mysql.user’ doesn’t exist)
- 8. Magento 2.3のDeclarative Schema
- 9. Declarative Schema in Magento 2.3
- 10. PHPエクステンションをCMakeする
- 11. WordPress検証コード
- 12. Laradockをやる時にコンテナがdocker-composeでもなかなか立ち上がってくれなかった話
- 13. AWSで作ったLaravelアプリケーションをXserverにデプロイする
- 14. 未定義の場合実行しないforeachを、なるべくシンプルに書いてみる
- 15. swagger-php で書く Annotation テンプレ3種
- 16. 【CMS】ローカル環境でJS CMSをお試しする
- 17. 変数の名前を付けるときに、絶対パスを格納していることを明記したい場合はabs_がよさげ
- 18. WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編
- 19. 【個人開発】ゲージの画像を作るサービスをリリースした
- 20. WordPress プラグインを使わずカスタムMetaBoxを作成する方法
画像アップロードの留意点
# ファイルサイズの上限
上限の設定をPHP側でするのかブラウザ側でするのかで作業内容が変わる。
PHP側で設定してもブラウザ側で何も設定していない場合、上限のチェックが入るのは**サーバにファイルをアップロード処理をしてから**となってしまう。
よって、巨大なファイルを転送しようとして長時間待ち続け、 結局ファイルが大きすぎてアップロードできなかったという事態に陥る。– PHP側で設定する場合
**php.iniのupload_max_filesizeに設定する。**
upload_max_filesizeは1ファイルあたりの上限サイズの設定
post_max_sizeはPOST全体のサイズ上限
post_max_sizeはupload_max_filesizeよりも常に大きくなければならない。– ブラウザ側で設定する場合
**”file”inputフィールドの前に”MAX_FILE_SIZE”hiddenフィールドを置く必要がある。
この値はバイト数で指定する。**
例).1MBの場合は1024*1024= 1048576バイトSORACOMのAPIをPHP(Guzzle)を使って呼び出してみます。
# SAMを用意する
ユーザーコンソールからAPIを実行するための[SAM(SORACOM Access Management)](https://dev.soracom.io/jp/start/sam/)ユーザーを用意します。ユーザーを作成して権限設定、認証情報を作成しましょう。
AWSのIAMと同じような感じです。発行した認証キーIDと認証キーシークレットはAPI呼び出しに必要になります。
# PHPからAPIを呼び出す
## Guzzleをインストール
HTTPクライアントのGuzzleをインストールします。“`
composer require guzzlehttp/guzzle
“`## APIを呼び出す
最初にauthAPIに認証キーIDと認証キーシークレットを渡して、APIキーとAPIトークンを取得する必要があります。
他のAPIはすべて、取得したAPIキーとAPIトークンをリクエストヘッダに含めてリクエストしなければいけません。下記のサンプルでは、最初にauthAP
stripe-phpメモ
# stripe-phpメモ
備忘録レベルの殴り書き
## stripe-phpとは?
3分で調べた内容
– 決済代行サービス[stripe](https://stripe.com/jp)をPHPから叩くためのライブラリ
– [CCbill](https://ccbill.com/)とかとは毛色が違いそう?
– 決済マージン3.6%
– クレジット決済可能
– 便利なダッシュボードがあるらしい
– サブスクサービスが作れるらしい## stripe-phpの使い方
– [API Reference](https://stripe.com/docs/api)
– 一通りの叩き方
– [Handling errors](https://stripe.com/docs/api/errors/handling)
– 例外オブジェクトの種類と中身
– [Errors](https://stripe.com/docs/api/errors)
– `$ex->getError()->type`でくる値
– [Stripe.php](https://github
WordPressでプラグインを使わず人気記事ランキングを表示する方法
人気記事を作るには記事が表示された際にカスタムフィールドに加算していくようにするだけ。
## 人気記事のfunctions.php設定
functions.phpに以下のコードを追記する。対応するkeyのカスタムフィールドがない場合は新しく作成する。2つめの関数で`wp_head`が実行されるときにカウントを実行するように設定。
“`php
function my_popular_post_counter($post_id) {
$count_key = ‘view_count’;
$count = get_post_meta($post_id, $count_key, true);
if ($count == ”) {
$count = 0;
delete_post_meta($post_id, $count_key);
add_post_meta($post_id, $count_key, ‘0’);
} else {
$count++;
update_post_meta($post_id, $count_key, $count);
}
}
戻り値を変数に保存して扱う方法
#最近PHP触りはじめたよーて人向け
といっても僕もまだまだ勉強中なので間違った点があればご指摘下さい、、
メモ程度です。関数て最初慣れるまで理解しにくいですよね。。。
引数とかスコープとか:expressionless:そんな方の助けになればとなんとなく理解しにくかったところを解説させていただきます!!!
“`
1. function fullname($lastname, $firstname) //6行目の引数を受け取る
2. {
3. $result = $lastname.$firstname; //1行目で受け取った引数を処理して$resultへ
4. return $result; //値を変数$resultへ返す
5. }
6. $result = fullname(“山田”, “太郎”); //関数fullname()を呼び出し&戻り値を受け取る
7. echo “私の名前は” . $result . “です。” //表示“`
##ポイントは変数 = 関数名(引数)です!
コメントアウトで処理の流れを簡単に記しましたが、6行目のよ
Laravel6.xの日本語化パッケージ
# 目的
Laravel6.xの日本語化を行い、その言語リソースをパッケージ化してみる。
# 日本語化について
[Laravel 6.x 多言語化](https://readouble.com/laravel/6.x/ja/localization.html)
## 設定
config/app.php
“`php
‘locale’ => ‘en’,
“`## 英語→日本語
デフォルトでは次の4種類が用意されている。
1. 認証(auth.php)
2. ページネーション(pagination.php)
3. パスワードリセット(passwords.php)
4. バリデーション(validation.php)***resources/lang/en***以下に対応するphpファイルがあるので、それを翻訳して***resources/lang/ja***以下へ置く。
# パッケージ化について
毎回翻訳するのは大変なのでパッケージ化してみる。
[Laravel 6.x パッケージ開発](https://readouble.com/laravel/6
MySQLが起動できない(動かなくなった) という地獄のエラー(ERROR! The server quit without updating PID file と Fatal error: Can’t open and lock privilege tables: Table ‘mysql.user’ doesn’t exist)
#背景
phpの学習中にmysqlをいじっていましたw
急にmysqlが起動できなくなり、エラー解消にほぼ半日躓いてしまったので、
その解決策と試したことを記事としてのせたいと思う!!
#mysqlでのエラー文との遭遇
###エラー内容一覧
###mysqlを起動を確かめる
“`
mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザーMBP.pid).“`
意味はpidファイルを更新せずに終わったよ!ってエラー?
すいません、、、意味がわかりません(涙)##pidファイルとは?
Pidファイルには、特定のプログラムのプロセスID(番号)が含まれています。たとえば、Apache HTTPDはメインプロセス番号をpidファイル(通常のテキストファイル、それ以上のもの)に書き込み、後でそこに含まれる情報を使用して停止します。 cat filename.pid | xargs killを使用して、その情報を使用して
Magento 2.3のDeclarative Schema
#Magento 2.3のDeclarative Schema
Declarative Schemaは、Magento2.2までのPHPコードを使用したデータベーススキーマ定義作成を置き換える仕組みです。
Magento2.3から新たに導入された仕組みで、XMLファイルを使用してテーブルの構造などを定義します。#Magento 2.3のDeclarative Schemaの使用する方法
Declarative Schemaの必要なファイルについてのみ説明します。
まず、フォルダ「Karabiner/Declarative/etc」内にファイル「db_schema.xml」を作成して、次のコードを記述します
“`xml:db_schema.xml
Declarative Schema in Magento 2.3 #Declarative Schema in Magento 2.3
Magento has introduced a new feature called Declarative Schema which aims to simplify the Magento installation and upgrade processes. This new concept will allow a developer to get away from writing updates for each new version in favour of declaring the final result that the developer wants to achieve.
#How to use Declarative Schema in Magento 2.3
we will only discuss file required for a Declarative Schema.
Firstly create a file `db_schema.xml` inside the
PHPエクステンションをCMakeする
# PHP extensionをCMakeを使ってビルドする
## 構成
“`
sample/
CMakeLists.txt
config.cmake
config.h.in
php_sample.h
sample.c
test.php
“`## 各ファイル
“`cmake:CMakeLists.txt
cmake_minimum_required(VERSION 3.5.1)project(sample-ext)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_FLAGS “-DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DPHP_ATOM_INC -DHAVE_CONFIG_H -O3 -funroll-loops”)
execute_process(COMMAND “php-config” “–prefix” OUTPUT_VARIABLE PHP_BASE_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
e
WordPress検証コード
# 概要
WordPressのテーマ・プラグインの検証をするときによく使うコードをまとめます。
開発よりもむしろ全体的なチューニングでよく使うものです。## ログ出力
ログをファイルに書き出す。
`/wp-content/debug.log` にログが書き出される。これを`wp-config.php`に書く
“`php
define( ‘WP_DEBUG’, true );
if ( WP_DEBUG ) {
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, true );
@ini_set( ‘display_errors’, 1 );
define( ‘SAVEQUERIES’, true );
}
“`ログ出力
“`php
error_log(‘test message’);
“`## Hook
### 掛かっているフックを調べる
現状どのようなフックが掛かっているかを確認する。
ある程度は何がどんなフックをかけているか把握できる。“`php
a
Laradockをやる時にコンテナがdocker-composeでもなかなか立ち上がってくれなかった話
Laradockを使っての環境構築にチャレンジしてみました。
Windows10 homeを使っているので、Docker for Desktopは使えず、
かつInsider Previewには切り替えたくないなと思いましたので、
Docker Toolboxをインストール!https://docs.docker.com/toolbox/toolbox_install_windows/
こちらリンクですが、入ってみても分かる通り、非常にわかりにくいUIですが頑張ってインストールしましょう。
その際に、gitとvirtual boxがインストールしますかと選択肢がでますが、
すでにインストールしている人はダブルと不具合になるのでチェックは外しておきましょう。インストール完了するとDocker Quickstart Terminalgが使えるのでクリックして起動。
初回はけっこう時間がかかります。
終了したら、おなじみのクジラのAAとIPアドレスが採番されて完了です。実際にVirtual Boxを開いてみてみると、「default」というボックスが立ち上がっているのが見てわか
AWSで作ったLaravelアプリケーションをXserverにデプロイする
#はじめに
タイトル通りですが、LaravelアプリケーションのデプロイをXserverで試してみました。
AWSでアプリケーションは作成したのですが、
XAMPPで作成した方も以下のやり方でできると思います。#まとめ
さっそくですがやり方を以下にまとめました。**※XAMPPでアプリケーションを作成した方は⑥以降を参考にしていただければと思います。**
①AWSでLaravelアプリケーションを作成。
②作成したアプリケーションのフォルダをダウンロードしてXAMPP環境下(htdocs内)に保存する。
③XAMPPでphpMyAdminを起動。アプリケーション用のDB(DB名:laravel)を作成する。
④.envをXAMPP環境下でDBが使えるようにに編集。
“`:.env
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
“`⑤コマンドプロンプトで同フォルダに移動してテーブル作成
“`
$ cd 作成したアプリのフォルダ
$ php artisan migrate//このコマンドでテーブルが作成
未定義の場合実行しないforeachを、なるべくシンプルに書いてみる
# 目的
– PHP Warning: Invalid argument supplied for foreach() を起こさない
– 予め空配列を定義するのもなんか嫌
– でも定義されているときはforeachを実行してほしい# 対策
“`php
// $array をstring型の配列と仮定します
foreach($array as $key => $value){
echo $value;
}
// => PHP Warning: Invalid argument supplied for foreach()// 対策
if(isset($array)) foreach($array as $key => $value){
echo $value;
}
// => エラーも起きず、何も出力されない$array = [‘a’, ‘b’, ‘c’];
// $array をstring型の配列と仮定します
if(isset($array)) foreach($array as $key => $value){
echo $value;
swagger-php で書く Annotation テンプレ3種
この記事は、温かみのある手作業で swagger-php の annotation を書かなければいけない人向けに、コピペで使えるannotationを提供する目的でまとめます。
# 単なる key value 表現のannotation
#### 出力例
“`
{
“id”: “1”,
“name”: “サンプル太郎”,
“email”: “example@hoge.com”,
“created_at”: “2006-04-13T14:12:53+09:00”
}
“`#### annotation
“`
/**
* @OA\Get(
* tags={“Common”},
* path=”/api/user”,
* @OA\Response(
* response=”200″,
* description=”success”,
* @OA\JsonContent(ref=”#/components/schemas/user_
【CMS】ローカル環境でJS CMSをお試しする
最近WordPress、いやだなあ~なんて思ってます。
更新通知メール多いのもなんですけど。
ブロック配置のところが分かりにくいのでメリットがまるで生かせてません。
WIXとかJIMDOとかだと重い上に細かいCSSカスタマイズが出来ないのでもだもだします。正直、静的サイトドーン! でもいいなあと思って、
改めてCMSツールを調べたところ「JS CMS」なるものを発見。・DBレス
・リアルタイムレイアウト
・完全無料
という謳い文句に惹かれていざいざお試ししてみます!
……ローカル環境で。[JS CMS公式サイト](https://www.js-cms.jp/index.html)
(公式にもローカル環境の手引きがあるんですけど、それとは違う方法です)#本体とテンプレートをDL
JS CMSは本体とテンプレートをセットでダウンロードします。
敢えて嫌な感じに言うと、一度落としたらテンプレートは変更できません。
とは言え痒い所はHTMLとかCSSいじったりすればいいだけなのでモーマンタイ。[ダウンロードページ](https://www.js-cms.jp/html/d
変数の名前を付けるときに、絶対パスを格納していることを明記したい場合はabs_がよさげ
# はじめに
相対パスではなく、絶対パスを変数に格納してほしい場合がしばしば生じます。
その際今まで私は、“`
$setting_json_full_path
“`
とかの名前を利用していました# abs
“`
$abs_setting_json_path
“`
とか、“`
$abs_ubuntu_iso
“`
とかの方が文字数も少なく、見た目もスッキリする上、意味もしっかり伝わるのでよいなと思った次第です。特に出典はありません。`abs`は`absolute path`、絶対パスの略称です。
突き詰めると好みの問題になりそうですが、`abs`を使っていこうと思った次第でした。[^1]
[^1]: 一番ベストなのは、参加したプロジェクトに合わせて使い分けることですね
WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編
本ページに直接来た方は[WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]から読んでね。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪ ---- ------------------- ↓ 余談はここから ↓------------------- [Laradock]:http://laradock.io [WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]:https://qiita.com/dozo/items/9d9e958d4acefffb3fb8 [WSL2+docker+PHPのWindows開発環境構築(2) docker編]:https://qiita.com/dozo/items/17d0ebfb05bb4446caed [WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編]:https://qiita.com/dozo/items/7bc21b59bae91bfd1ae1 関連記事: * [Bash on Ubuntu on Windowsを使う(1)](ht
【個人開発】ゲージの画像を作るサービスをリリースした
個人開発のサービス [まいゲージ](https://www.cappps.com)をリリースしました。
ゲージの画像を作るサービスです。
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377526/650ab01a-160d-f5bd-293c-1001c649c012.png)
#作るときに考えたこと
やっぱり、無名の人が頑張っても人気にはならないわけで、有名にするには**SNSを使う**必要があります。
ツイートボタンとかを用意して、投稿されたツイートがクリックされるように、twitter cardを使いました。
もともと、ダウンロードさせて自分で画像添付にしようかと思ったけど、手間がかかって途中で諦める人が多くなるので却下。
あと、「リンクが広告臭いのがいやだ」って消される可能性もあるし、、#Twitterカードの失敗
Twitterカードのメタタグをつけて、何回ツイートしても、Twitterカードがでませんでした。
理由はカードがBASE64に対応をしていなかった
WordPress プラグインを使わずカスタムMetaBoxを作成する方法
metaboxはカスタムフィールドの強化版みたいな感じ。デフォルトのカスタムフィールドはkeyに対して値を入力するだけだが、metaboxを使うことでカレンダーや画像の選択、セレクトボックスなどのフォームを利用できるようになる。
一番簡単に実装するなら以下のようなプラグインを使う。ここではプラグインを使わず実装する方法をまとめる。
– [Advanced Custom Fields](https://wordpress.org/plugins/advanced-custom-fields/)
– [Meta Box](https://wordpress.org/plugins/meta-box/)## カスタムMetaBoxの作り方
metaboxを作るのに必要なのは3つの関数。1つのmetaboxで複数のフォームを作成することも可能。– add: metaboxの定義
– save: データの保存
– html: フォームの定義“`php
function my_custom_meta_box_add()
{
add_meta_box(
‘post_meta