PHP関連のことを調べてみた2022年01月14日

PHP関連のことを調べてみた2022年01月14日

(仮)Laravel Snappyにて、cssサイズが想定通りにする。(wkhtmltopdf側の設定をする。)

※私的備忘録のため、乱雑に記載しています。

###【問題点】
– Laravel Snappy にて、cssが想定通りに出力されない

###【原因】
– wkhtmltopdf にて、自動調整がdefaultでonになっている。

###【解決方法】
– snappyのsetOptionにて、以下のように設定すれば良い。
“`->setOption(‘disable-smart-shrinking’, true);“`

※wkhtmlでは、“`–disable-smart-shrinking true“` を追加してあげれば良い。

元記事を表示

Cropper.jsで加工した画像をAjaxでLaravelに送り保存する。

この記事では、Cropper.jsを利用し画像を加工したあとに、加工した画像をAjaxを通してLaravelに渡し、その画像を保存する方法を紹介します。

Cropper.jsは、ライブプレビューとカスタムアスペクト比をサポートしており、JavaScript / jQueryプラグインを画像のトリミングに利用するのに便利です。

# 事前準備
## 1. フォルダの作成

ファイルを保存する先のフォルダを作成します。

今回、コントローラで指定するフォルダは「storage/app/public/upload」です。

ファイルをアップロードして画像を切り取って保存を押すと、このフォルダに保存されます。

# バックエンド側

## 2. ルーティング

次に下記のルーティングを設定してください。

“`routes/web.php

Route::get(‘image-cropper’,’ImageCropperController@index’);
Route::post(‘image-cropper/upload’,’ImageCropperController@upload

元記事を表示

Laravelで楽天APIのリクエスト制限を対策する

# はじめに
Laravelで楽天APIを使ったWEBアプリを開発していたところ、APIを提供している[楽天ウェブサービスのヘルプページ](https://webservice.faq.rakuten.net/hc/ja/articles/900001974383-%E5%90%84API%E3%81%AE%E5%88%A9%E7%94%A8%E5%88%B6%E9%99%90%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84-)でリクエスト制限があることを知りました。

>1つのapplication_idにつき、1秒に1回以下のリクエストとしてください。

アフィリエイトサイトとして高い成果が見込まれる場合は制限緩和ができるみたいですが、そうでない場合はAPIの使用が制限されています。
もし継続的に制限を超えたリクエストを行った場合はアプリIDが利用停止になる可能性があるみたいなので対策が必要だと考えました。

楽天APIの実装方法についての記事はいくつかありましたが、リクエスト制限まで触

元記事を表示

laravel/Carbon 期間を指定して日付文字列の配列取得する

# laravel/Carbon 開始日付・終了日付指定し、その期間の文字列配列を取得する
laravel5.7を使用している案件でCarbonPeriodをuseしたら**「Class ‘CarbonPeriod’ not found」**とエラー。

バージョンによるものなのか、どうエラー解消するのか、パっと分からなかったので
プロジェクトの日付操作はCarbonで統一されてるみたいなので従来どおりCarbon使って期間の文字列配列生成しました。

また同じ事が起きたとき用にテンプレとして書き残しとこーって
※逆期間非対応

“`php
use Carbon/Carbon;
“`

“`php
$startDateTime = new Carbon(‘2022-01-01’);
$endDateTime = new Carbon(‘2022-01-08’);

$dates = [];
$diffTotalDays = $startDateTime->diffInDays($endDateTime);
for ($diff = 0; $diff <= $d

元記事を表示

【Laravel】Requestで取得できる値の型を変換する必要性は?

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はLaravelにおいてRequestで取得できる値の型を変換する必要性についての疑問をまとめます。

#今回の疑問
コントローラー内のアクションメソッドで引数として取得できるRequestに含まれるパラメータの型を変換する必要性があるのか、その理由は何か、疑問を持ちました。
詳細はサンプルコードにて記載します。

#サンプルコード
このサンプルコードは[PHPフレームワークLaravel入門 第2版

元記事を表示

PHPのバージョンが勝手に変更されてMongoDBにアクセスできなくなった話

# 症状
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459889/27c918fb-43a9-27d1-dc5a-7a6365cfb9ee.png)

突然MongoDBへアクセスができなくなったしまった
PHPのドライバが対応していないっぽい

# 解決
### PHPのバージョンを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459889/50e306d2-2548-e147-17bf-7b179ddee134.png)

“`bash
$ php -v
PHP 8.0.12 (cli) (built: Oct 22 2021 12:34:00) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.12, Copyright (c) Zend Technologies
with Zend OPcache v8.

元記事を表示

Mac(PC)にてバックスラッシュ(\)を入力する方法

#はじめに
こちらの投稿は、Apple社のデスクトップPC、iMacに付属されているキーボード「Magic Keyboard(JIS)」をお使いの方に向けてです。
***
#環境
・macOS バージョン11.6にて動作確認をしています。
***
#バックスラッシュの入力に仕方
macOSを付属のキーボード(JISキーボード)お使いの場合、バックスラッシュの入力の仕方は、
・キーボードの左下にある、「option」+右上にある「¥」

#どういうときに使うか
・主にプログラミングを描くときに使います。
・PHPのエスケープシーケンスをするときに使います。
・一つのタグの中に、シングルクォーテーション(”)やダブルクォーテーション(“”)を複数個使うことは出来ないため、
“`“`
などと入力しようとするとエラーが出てしまうので、それを回避するために
“`“`と入力することでエラーを回避することができます。

元記事を表示

myAssignとは

##こんなコードがあった!

“`php:sample.php
$menuAry = $this->getMenuForAPI();
myAssign(‘menuAry’,$menuAry); // Smartyにアサイン
“`

##上から読んでみよう!

####◆$menuAry
変数名だね!

####◆$this
Refers to current object
…よくわからん?わすれた。

####◆->
…アロー演算子というらしい

####◆getMenuForAPI()
とりあえずAPIだね!

####◆myAssign
SmartyにAssignする
次画面持越し変数にセットする
…画面で使るようにするのか?

##つまりどういうことだってばよ
 ・`getMenuAPI`の返却値を`$menuAry`に格納
 ・`$menuAry`の値を変数`menuAry`(Smartyとしての変数名の方)として定義を追加する

なので…

Smartyとしての変数を定義したい場合に使う関数

ということかな?!

元記事を表示

配列に値を追加する複数の方法

配列に値を追加するにはいくつかあるらしい。
あとでかく

元記事を表示

$thisってなんぞ?

あとでかく

元記事を表示

コメントアウトの@return voidってなんぞ

あとでしらべる

元記事を表示

blastengineを使ってPHPでメールを送信する

[blastengine](https://blastengine.jp/)はシンプルに使える開発者向けメールサービスを提供しています。何かと面倒なメール配信をシンプルに、かつ確実に送信先に届くようになります。

今回はblastengineを使ってPHPでメール送信を行うまでの流れを解説します。

## ユーザ登録する

blastengineにユーザ登録します。管理画面に入るためのユーザID、パスワードが手に入るので、ログインします(ユーザIDは後で使います)。

![getting-started-4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/515541ad-b74e-e1e2-ac34-46d181ee2924.jpeg)

## 送信元ドメインのSPFを設定する

送信元として利用するドメイン(自分で持っているもの)の設定をします。これは任意のドメイン管理サービスで設定できますが、TXTレコードに以下のSPFを追加します。

“`
txt @ v=spf1 includ

元記事を表示

1054 unknown column ‘email in ‘field list’はこれで解決した

#今やっていること
Laravel6を使って簡単な掲示板機能の作成中。
最初の新規登録でつまりました。

##表示されたエラー
“`
SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘email’ in ‘field list’
“`
このエラーの解決方法はいろんな記事で読みましたが、イマイチ解決できず。
新規登録の機能を実装しているRegisterControllerを見直してみました。

##解決方法
“`php:RegisterController.php
public function register(Request $request){
if($request->isMethod(‘post’)){
$data = $request->input();
$validator = Validator::make($data,[
‘username’ => ‘required|max:30’,

元記事を表示

sendgrid php で smtp 送信 ライブラリ無しでもOK

今回は cakeemail を使用。
メールサーバーってマジで不安定だから大変。
しかも最近はAPI送信とかになっているからsmtpの送信方法が無くて困る。

以下の方法ならアカウントを設定するだけだから
ライブラリとか必要無しで送信できるので便利。

ということで早速方法。

sendgridを利用

https://sendgrid.kke.co.jp/docs/API_Reference/SMTP_API/integrating_with_the_smtp_api.html

まずはメールの設定です

“`

public $default = array(
‘host’ => ‘smtp.sendgrid.net’,//固定
‘port’ => 587,//固定
‘transport’ => ‘Smtp’,//固定
‘username’ => ‘apikey’, //固定
‘password’ => ‘SG.Uxxxxxxxxxxx229’,//要変更 パスワード
‘from’ => ‘you@localhost’,//任

元記事を表示

Slim4 に dotenv と migration の機能を追加していい感じにする

## 環境
* Slim4 (Skelton じゃない方だが、どっちでも行けそう?)
* PHP7.4 (or later)
* MySQL5.7 (MariaDB)
* dotenv ライブラリ: `vlucas/phpdotenv@5.4.1`
* マイグレーションライブラリ: `robmorgan/phinx@0.12.9`

## dotenv ライブラリの準備
PHP 向けの dotenv ライブラリは2種類くらいメジャーなのがあるが、今回は `vlucas/phpdotenv` を採用した。

### インストール
“`sh
composer require vlucas/phpdotenv
“`

### 設定ファイル作成
“`sh
touch .env
“`

自分の環境に合わせて、設定内容を書く。

“`/.env
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=username
DB_PASSWORD=password
DB_CHARSET=utf8
“`

## マイグレー

元記事を表示

DQLで日付関数とGROUP BY

DQLでDATEカラムをGROUP BYする方法がわからなかったので調べた

#DoctrineExtensionを入れる
https://github.com/beberlei/DoctrineExtensions
でSQLの関数を追加

“`
composer require beberlei/doctrineextensions
“`
`configs/packages/doctrine.yaml`に追加

“`
doctrine:
orm:
dql:
string_functions:
MONTH: DoctrineExtensions\Query\Mysql\Month
YEAR: DoctrineExtensions\Query\Mysql\Year
DATE_FORMAT: DoctrineExtensions\Query\Mysql\DateFormat
“`
#QueryBuilder
例えば`NewsPost`エンテ

元記事を表示

【初心者が解く】Windows10環境でLaravel sailインストールのエラーが起きる時

初心者の自分なりに解決方法を見つけたので、メモ用として記載しておきます。

OS: Windows10
にてエラーを確認(macは持っていないので同様の処理でうまくいくかは不明です。)

症状
インストール時に下記のエラー表記が出る

“`
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c apt-get update && apt-get install -y gnupg gosu curl ca-cer
tificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 && mkdir -p ~/.gnupg && chmod 600 ~/.gnupg && echo “disable-ipv
6” >> ~/.gnupg/dirmngr.conf && apt-key adv –homedir ~/.gnupg –k

元記事を表示

Mysqlで躓いた時 確認するよ

Mysqlの学習で躓いた時に見ていたサイト達です
お世話になりました。

Mysqlのインストール手順から初期設定まで
参考サイト: https://webkaru.net/mysql/windows-env/

ターミナルにてSQL文の発行
参考サイト:https://webkaru.net/mysql/windows-sql-query/

【エラー】
PATHが通っていない時
参考サイト: https://nichi-petit.com/entry/path-error

※見つけ次第追記していきます。

元記事を表示

Paiza出力は同じなのにエラーになる原因

#Paiza提出前に確認すること
最近Paizaを始めた者です。
出力は同じなのにエラーになったので原因を探ったところ簡単なミスでした。
しかし同じミスで解決できてない方もいるかもなので共有しておきます。

##実際の処理
“`php
//期待される出力
3 3 7 3 7 5 8 3 5 3
//出力処理
foreach($posts as $post){
echo $post.’ ‘;
}
//実際の出力
3 3 7 3 7 5 8 3 5 3
“`

こちらでエラーになりました。
結論から原因は最後の数値の後ろにもスペースが入っているというものでした。
Paizaさんも提出前にちゃんと
「期待する出力と出力結果が同じに見えるのに失敗になる場合、半角スペースや改行の数が異なっていると考えられます。
余分な半角スペースや改行がないかを今一度ご確認ください。」

と教えてくれていました。しっかり最後まで文章を読まなくては。。。
##解決策
一応今回のケースの解決策も載せておきます。

“`php
//期待される出力

元記事を表示

テスト投稿

[テスト](https://taco3suisui.com “https://taco3suisui.com”)
 リンクを貼ってみた。

元記事を表示

OTHERカテゴリの最新記事