- 1. クッキーとセッションとデータベース
- 2. Cloud BuildでPHPUnitテストを行う
- 3. Sailを使ってインストールしたLaravelのTinkerで日本語が使えないときの対処
- 4. PHPUnitでテストケースを個別に指定して実行したい場合
- 5. 【PHP】PHPのバージョンを更新するべき理由
- 6. 備忘録~BootstrapをSassでカスタマイズする方法~
- 7. 結局コメントってどんなこと書けばいいのよ?
- 8. 【PHP初心者】PHP(MAMP)×Mac(M1)×VScode環境でデバッグ機能を使えるようにする方法
- 9. 【PHP】気象庁API から天気予報を取得してみた
- 10. 【PHP】Yahoo 気象情報API から雨量情報を取得してみた
- 11. 【PHP】月位置(方位角・高度・月齢)計算APIから月齢を取得してみた
- 12. The “XXXXXXX” file could not be downloaded: failed to open stream: Cannot assign reques ted address 対処方法
- 13. phpbrew を使って install しようとすると openssl 周りのエラーが起きる
- 14. 【PHP】Open Weather Map APIから気象情報を取得してみた
- 15. 【PHP】日出、日没、薄明の時間を取得してみた
- 16. phpのupload上限解放
- 17. 【PHP8.2】call_user_func()と$callable()の矛盾を解消する
- 18. Xampp環境で開発したReact x Laravel x mysql のアプリケーションをherokuにデプロイする。
- 19. コメント機能 laravel
- 20. PHPMDの既存ルールセットのうち特定ルールだけ変更
クッキーとセッションとデータベース
## 概要
クッキーとセッションの違いをうまく説明できなかったので、クッキー、セッション、データベース、3つのデータを保存する方法の、調べたこと、自分の考えをまとめました。##クッキー
特徴
– クッキーを使うことでPHPが作成したデータをクライアントのPCに保存して、ブラウザを閉じてから一定期間、維持することが出来る。– 保存されたクッキーデータは、保存したサイトへの以降のアクセスでHTTPリクエスト中のクッキーヘッダに常に含まれるようになる。
– 基本的に、クッキーはユーザー側の操作に関わらず、すべてのHTTPリクエストに含まれる。
– クッキーはユーザーがブラウザの設定を変えることでブロックすることができる。## セッション
– セッションとは、ユーザーがWebサイトにアクセスし、ページ遷移し、ブラウザを閉じるまでの期間のこと。
– セッション変数を使うことでクッキーと同じ用に一定期間ユーザーごとのデータを維持することが出来る。
– セッション変数はその期間だけ値を使うことが出来る変数のこと。
– セッション変数は、サーバーの設定で有効期限が決められている。###
Cloud BuildでPHPUnitテストを行う
# やること
1. `cloudbuild.yaml` に`docker-compose` の処理を追加
1. CloudBuild用の`docker-compose-test.yaml` を作成
1. CloudBuild用の`.env.testing` を作成## `cloudbuild.yaml` に`docker-compose` の処理を追加
“`yaml:cloudbuild.yaml
timeout: 1200s
steps:
# builds the container image
– name: ‘gcr.io/cloud-builders/docker’
id: Build
args:
– ‘build’
– ‘-t’
– ‘gcr.io/$PROJECT_ID/test:$SHORT_SHA’
– ‘-f’
– ‘Dockerfile’
– ‘.’– name: ‘docker/compose’
id: UnitTest
args:
Sailを使ってインストールしたLaravelのTinkerで日本語が使えないときの対処
# この記事について
sailを使って、laravelの環境を構築したところTinkerで日本語の入力ができませんでした。症状としては以下の記事と同様。
[Laravel の tinker で日本語が入力できなくて困ったけどなんとかなった話](https://qiita.com/B73W56H84/items/a9152ec00cd7996f6573)
[Laravel の tinkerで日本語入力ができず色々迷走していたらもっと根本的な問題だった件](https://qiita.com/fugaxx/items/bd8de7573d727d08b128)違いは、`./vender/bin/sail tinker`としてTinkerを起動している点です。
本記事では最終的には、Dockerコンテナ内でTinkerを起動すれば日本語入力できるようになったというところまで紹介します。
(良い方法がありましたらご教授ください。記事の一番下に参考として検証した事項をまとめています。)
## 環境(PC)“`
$ ./vendor/bin/sail -v
PHPUnitでテストケースを個別に指定して実行したい場合
phpunitでテストコードを書いている場合、全体実行だけでなくグループ単位だったり、書いているケースを個別で実行したい場合があります。
そんな時のコマンドメモです。## グループ単位の場合
“`
phpunit –group=testA
“`## ケース指定の個別の場合
“`
phpunit –group=testA –filter “testA-001”
“`filterのみでも実行可能です
“`
phpunit –filter “testA-001”
“`日本語のテスト関数名にしている場合も実行可能です
“`
phpunit –filter “テスト〜〜〜がエラーにならないことを確認する”
“`
【PHP】PHPのバージョンを更新するべき理由
# はじめに
プロジェクトを進めるにつれて、PHPのバージョンの更新は確実に必要はあると思っていたのですが、なぜバージョンアップが必要なのかを具体的に把握できていなかったので考えてみました。# 目次
1. [公式サポート期限](#Chapter1)
1. [パフォーマンス向上](#Chapter2)
1. [新文法に対する対応](#Chapter3)
1. [まとめ](#Chapter4)
1. [参考文献](#reference)
# 公式サポート期限とセキュリティの脆弱性
### PHPバージョンとサポート期限一覧
|バージョン|初回リリース|最新リリース|最新リリース日|アクティブサポート|セキュリティサポート|
|——-|———|——–|———–|—————-|—————-|
|8.0|2020/11/26|8.0.9|2021
備忘録~BootstrapをSassでカスタマイズする方法~
##PHP(7.4)・Bootstrap(v4.5)・Scssphp(Sass)(v1.81) Windows 10 Home
##Bootstrapとは
世界で最も人気なHTML、CSS、JavaScriptのフレームワーク
メリット:①CSSを一から書かなくてよい。
②レスポンシブデザインに対応している。
③統一感のあるデザインが簡単にできる。今回はComposerを用いてインストールした。
![Bootstrapインストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1773238/cd98bb87-a93a-e114-c3fb-116df58ac97a.png)するとVendorというフォルダが作成される。
CSSで使うには、Vendor/twbs/bootstrap/dist/cssのフォルダの中のbootstrap.css:ローカル環境向き
bootstrap.min.css:本番環境向きこの二つのうちどちらかをHTMLに読み込む。
“`
結局コメントってどんなこと書けばいいのよ?
# コメント、書いてますか?
プログラムを書く時、処理に対する解説などの用途としてコメントを書くことがあると思います。
プログラムの勉強をし始めた時などは、まず実装を行う前にどのような処理を行うかをコメントで書いてから実装した方がいい、プログラムと同じくらいコメントもたくさん書こう!等と教えられた方も多いと思います。(筆者もその一人)
実際のところ、コメントはどれくらいの粒度でどれくらいの量記載するのが正しいのでしょうか?
ここではコメントを書くことの意義や有用性、そして実際にどのように書くべきかを考えていきたいと思います。# コメントの例
早速ですが、コメントの例を記載しながら考えていきたいと思います。
サンプルについては僕が実際に仕事や本、その他資料で見たり書いたりしたものを例題用に変更したものですので、必ずしも普遍性が担保されているものではないということについてはご留意ください。
サンプルのコードはphpを使用しますが、他の言語でも同様の考えができるかなと。“`php
/**
* 数量と単価から合計金額を算出する
* @param int $quantity 数量
【PHP初心者】PHP(MAMP)×Mac(M1)×VScode環境でデバッグ機能を使えるようにする方法
## はじめに
プログラミングをしていると、思う通りの挙動にならない場面がよくありますよね。そんな時に役に立つのがデバッグ機能です。
以前Javaでプログラミングしていたときは「Eclipse」という統合環境を使用していたため、デバッグ機能も簡単に使うことができました。
しかし、現在使っている環境はPHP×VScode。
そのままではデバッグ機能を使うことはできません。デバッグ機能を搭載すべく参考にできそうな情報を調べたのですが、2021年9月時点ではXampp×Mac(M1)×VScodeの設定記事を見つける事ができませんでした。(Windowsの記事はヒットするんですが…)
Macの場合、MAMPの方が参考にできる記事が多く、デバッグ機能の設定もしやすそうだったので、開発環境をXAMPPからMAMPに移行しました。
ということで前置きが長くなりましたが、本記事は**「PHP(MAMP)×Mac(M1)×VScode環境でデバッグ機能(Xdebug)を使えるようにする」**ための備忘録になります。
※PHPのverは8.0.8です。## 設定の流れ
### 1
【PHP】気象庁API から天気予報を取得してみた
#初めに
ダッシュボード作成のために、天気予報をAPIにて取得する。
1年くらい前の気象庁のHPが大幅リニューアルし、非公式ながらAPIが発見された。そのAPIを用い「天気予報」を取得したいと思う。[気象庁 ](https://www.jma.go.jp/jma/index.html)にて使用されているAPIを使用。詳しいことは[気象庁ホームページ防災気象情報のURL構造](https://qiita.com/e_toyoda/items/7a293313a725c4d306c0)を参考に作成した。
⇒PHPを用い、HP等で表示させる用途を想定※非公式のため、無保証。アップデート等により使用不可になる可能性もあり。
※[政府標準利用規約(PDF)](https://www.kantei.go.jp/jp/singi/it2/densi/kettei/gl2_betten_1.pdf)に準拠して利用すること##環境
-Windows10
-PHP 8.0.6##データの詳細
エリアのコード(pathCode) 東京は130000
http://www.jma.go.jp/bo
【PHP】Yahoo 気象情報API から雨量情報を取得してみた
#初めに
ダッシュボード作成のために、雨量をAPIにて取得する
[YOLP 気象情報API ](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/weather.html)を使用する。
⇒PHPを用い、HP等で表示させる用途を想定>[リファレンス](https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/weather.html)より引用
>指定した緯度経度の雨の強さを取得できるAPIです。
>現在時刻の降水強度実測値から、60分後までの降水強度予測値を取得できます。##環境
-Windows10
-PHP 8.0.6##パラメータ
* appid => Yahooデベロッパー登録をし、取得する
* coordinates => 経度,緯度(世界測地系)
* output => 出力形式を指定(json/xml)
* date =>日時を指定(YYYYMMDDHHMI形式)本コードではparamsにてパラメータをセットしてくださ
【PHP】月位置(方位角・高度・月齢)計算APIから月齢を取得してみた
#初めに
ダッシュボード作成のために、月齢をAPIにて取得する
[月位置(方位角・高度・月齢)計算API ](https://mgpn.org/api/moon/)を使用すると取得できる。
⇒PHPを用い、HP等で表示させる用途を想定##環境
-Windows10
-PHP 8.0.6##パラメータ
lat (float):必須、取得したい場所の緯度、
lng (float): 必須、取得したい場所の経度本コードではparamsにてパラメータをセットしてください。
# コード
“`PHP:moon_age_api.php
“35.000000”,
“lon” => “135.00000”,
);
$url = $api . ‘&lat=’ . $params[‘lat’] . “&lon=” . $params[“lon”];$m
The “XXXXXXX” file could not be downloaded: failed to open stream: Cannot assign reques ted address 対処方法
1.S3のライブラリをappコンテナ内でインストールしようと下記コマンドを実行した所エラーが発生!
“`
/work# composer require league/flysystem-aws-s3-v3
“`“`
//エラー
The “http://repo.packagist.org/p/phpunit/php-invoker%24d51629773da6aa4144adc03bb9c518ddab3a46018cb3467f76ed7d0b00a3e417.json” file could not be downloaded: failed to open stream: Cannot assign reques ted address
“`2.下記コマンドでエラーの原因調査!
すると、2箇所エラーらしき箇所を発見!
何かコマンドを実行するよう指示が出ました。“`
/work# composer diag
Checking composer.json: OK
Checking platform settings: OK
Checking git se
phpbrew を使って install しようとすると openssl 周りのエラーが起きる
**これは小ネタです**
—-
タイトル通りのトラブルが起きた時の解消法です。
端的に言うと、`openssl@3`をインストールしてるとエラーが起こります。エラー内容
“`
error: use of undeclared identifier ‘RSA_SSLV23_PADDING’
REGISTER_LONG_CONSTANT(“OPENSSL_SSLV23_PADDING”, RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT);warning: ‘RSA_new’ is deprecated [-Wdeprecated-declarations]
“`だいたいこういうエラーが出てしまいます(`openssl@3`をインストールしてると)
そう言う時は、下記コマンドを打ちましょう(PHP8 をインストールする場合)
“`sh
OPENSSL_CFLAGS=”-I/usr/local/opt/openssl@1.1/include” \
OPENSSL_LIBS=”-L/usr/local
【PHP】Open Weather Map APIから気象情報を取得してみた
#初めに
ダッシュボード作成のために、気象情報をAPIにて取得する
[Open Weather Map API](https://openweathermap.org/api)を使用すると取得できることが判明
⇒PHPを用い、HP等で表示させる用途を想定##環境
-Windows10
-PHP 8.0.6##パラメータ
lat (float):必須、取得したい場所の緯度、
lng (float): 必須、取得したい場所の経度
appid:必須、[Open Weather Map API](https://openweathermap.org/api)に登録し、取得してください。
unit:metric 摂氏温度(℃)の取得に固定しています。
lang:ja 日本語に固定しています。本コードではweather_configにてパラメータをセットしてください。
##コード
“`php:owm_api.php
【PHP】日出、日没、薄明の時間を取得してみた
#初めに
ダッシュボード作成のために、各種情報を取得する
コメントより、[date_sun_info](date_sun_info)関数にて取得できることが判明
⇒PHPを用い、HP等で表示させる用途を想定※[Sunset and sunrise times API](https://sunrise-sunset.org/api)を使用予定でした、、
##環境
-Windows10
-PHP 8.0.6##パラメータ
lat (float): 取得したい場所の緯度、必須
lng (float): 取得したい場所の経度、必須
date (string): YYYY-MM-DDフォーマットにて入力/相対・絶対日時の指定も可能。入力しない場合は現在の時刻を取得する。オプション。
callback (string): Callback function name for JSONP response. Optional.
formatted (integer): 0 か 1 (1 がデフォルト). 0の場合はISO 8601にて出力される。オプション本コードでは$sunset_c
phpのupload上限解放
phpやwpを使う際にuploadファイルの上限があることに気がつきました。
この設定をいじれば、上限が解放され、重たいファイルもupすることができるようになります。
Localで開発をしていると気づきにくいところですが、本番反映する時などには重要です。#### php.iniを設定する
phpの初期設定への変更を促すことができます。サーバーの中からファイルを探して、
“`upload_max_filesize = 32M
post_max_size = 64M
memory_limit = 128M
“`この辺りの設定を見直します。
upload_max_filesizeを変更する際に、32M(メガバイト)から128や256などにあげるといいかと思います。その際には、必ずサーバーの再起動を忘れずにしてください。ただ単に記述するだけだと意味がないので。
再起動せずともできる方法はあるとは思いますが、再起動すれば間違いないと思います。他には、.htaccessをいじるものもあります。
どの部分をいじったか、忘れないようにしましょうね。参考:
https:/
【PHP8.2】call_user_func()と$callable()の矛盾を解消する
PHP8.1もまだリリースされていないというのに、早々とPHP8.2に導入される機能がひとつ決まりました。
導入というか削減ですが。そんなわけで以下はPHP8.2のRFC、[Deprecate partially supported callables](https://wiki.php.net/rfc/deprecate_partially_supported_callables)の日本語訳です。
# Deprecate partially supported callables
## Introduction
このRFCは、`call_user_func($callable)`でサポートされているが、`$callable()`ではサポートされていない構文を非推奨とします。
## Proposal
以下の構文は、[is_callable](https://www.php.net/manual/ja/function.is-callable)や[call_user_func](https://www.php.net/manual/ja/function.call-use
Xampp環境で開発したReact x Laravel x mysql のアプリケーションをherokuにデプロイする。
#はじめに
開発したアプリケーションをherokuにデプロイしようと思ったのですが、使用した技術的にもあまり適当な情報がなかったので備忘録としてまとめるついでに誰かの役にたてばなと思います。環境がLinuxですのでMacの方は適宜読み替えてください。様々なサイトを参考にさせてもらっており、参考文献として最後に載せています。#環境
Ubuntu20.04LTS
React
Laravel(php)
mysql
xampp#前提
linuxのコマンドが触れる
gitを扱える
デプロイの概念がなんとなく分かる
laravelアプリケーションフォルダ直下をgitで管理している#herokuの登録とClearDBの設定
こちら[[1]]から登録します。2段階認証みたいなやつはなんか飛ばしちゃいましたが、やっといた方が良い気がする。ログインまで行けたら**Create new app**を選択してアプリケーションの作成をします。名前を入力して、リージョンはアメリカとヨーロッパしかないのでアメリカを選択。**Overview**を押した後に**Configure Add-ons**を押す
コメント機能 laravel
#マイグレーションファイルの作成
“`
$ php artisan make:migration create_comments_table –create=comments
“`“`comments_table.php
public function up()
{
Schema::create(‘comments’, function (Blueprint $table) {
$table->increments(‘id’);
$table->unsignedInteger(‘article_id’);
$table->unsignedInteger(‘user_id’);
$table->text(‘content’);
$table->foreign(‘article_id’)->references(‘id’)->on(‘articles’)->onDelete(‘cascade’);
$
PHPMDの既存ルールセットのうち特定ルールだけ変更
# priorityを変更する
例えば、`rulesets/codesize.xml`のルールを読み込みつつ、特定のルールだけ変更したい。
1. `rulesets/codesize.xml`を読み込み、変更したいルールを除外する
1. 改めて`rulesets/codesize.xml/xxxx`で個別にルールを読み込み、設定を変更する“`xml:phpmd.xml