PHP関連のことを調べてみた2021年10月30日

PHP関連のことを調べてみた2021年10月30日
目次

Google Cloud Storage キャッシュを変更

なぜか知らないが、vue.jsでGoogle Cloud Storageの画像を読み出すと、
ところどころ真っ白になったり読み出せなかったりする。

理由は不明。
まぁ、キャッシュかなと考えているので
Google Cloud Storage の デフォルト 3600秒の画像のキャッシュを伸ばす。

とりあえず、すでにあるファイルを変更する場合は以下。

“`hoge.php

$storage = new StorageClient([
‘projectId’ => config(‘app.gcp_project_id’),
‘keyFile’ => json_decode(file_get_contents(config_path(‘gcp.json’)), true)
]);

$bucket = $storage->bucket(config(‘app.gcp_bucket_name’));

$objectName = “menuphoto-300×300-10.jpg”;

$object = $bucket->object($objectName);

元記事を表示

macOS Montereyにアップデートしたら『command not found: php』

つい先日macOS Montereyにアップデートしました。

その後、作業をするためにphpを立ち上げようとしたらところ、

command not found: php

でエラーに、、、。

なにが原因なのかと調べたところ、

https://jp.quora.com/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%A7php%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%A8php%E3%81%AF%E6%8E%A8%E5%A5%A8%E3%81%97%E3%81%AA%E3%81%84-%E5%B0%86

どうやら今回のMonteryでphpが同梱されず追加パッケージ扱いになるようです。

なので、brewでインストールしたところ、問題なく動きました。

元記事を表示

【PHP/Laravel】input type=”file”でファイルが送信できない(受け取れない)

fileを選択しているのに、受け渡しがうまくできなかったときの解決策メモ。

①name属性のタイプミス

②form に enctype=”multipart/form-data” が抜けている

③inputにdisabledが入っている(jsで動的についてたりするので注意)

あとでちゃんと清書します。

元記事を表示

DockerでPHPとMySQLのシンプルすぎる環境構築を行う

## 執筆に至った経緯
– Docker使えたらカッコよくね?

– ネットに転がってる環境構築は強すぎて理解できなくね?

– 最小構成の環境構築を知って、そこから自分が必要な部分を拡張していったら理解できるんじゃね?

## 想定読者
– Dockerの基礎的なことは何となく分かったが、実際に使ってみたい方。
– 他人の作ったDocker環境は使ったことがあるが、自分では構築したことがない方。

## 今回のゴール
– DockerでPHPとMySQLの環境構築を行う。
– 具体的には以下3つが実行できたら完了とする。
– PHPコンテナ内に入り、helloworldを出力する。
– MySQLコンテナ内に入り、適当なSQL文を実行する。
– PHPからMySQLに接続する。

## 実行環境と筆者のレベル感
### 実行環境
– OS : Windows10 Pro
– プロセッサ : 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz 3.00 GHz
– 実装RAM : 16.0GB
– システムの種類 : 64 ビット

元記事を表示

AWS SDK for PHP3 AutoScalingClientからAuto Scaling グループを設定してみる

## 前置き
①LaravelアプリケーションのCommandでwebから情報を定期取得

②Amazon SQS(メッセージキューイングサービス)に取得したデータを追加
 *必要なデータを配列に入れ、serializeしたものを送信しています。

③定期的にキューからメッセージを取得し処理を実施

ということをする機会があったのですが、気づいたらキューに数万件のメッセージが。。
より早く、かつ柔軟に処理したいと思い、LaravelのCommandクラスから該当のSQSキューのメッセージ件数を取得。
メッセージ件数に応じてAuto Scaling グループ(AWS Auto Scaling)の設定を変更し、必要なだけサーバーを立てるということをしたいと思い、この記事を書くに至りました。

追伸:
私もまだまだ道半ば故、ご指摘やアドバイスを頂ければとっても嬉しいです。

## ■事前準備
今回はローカルに構築したLaradock環境下で行ってみます。

・まず、workspaceコンテナへ

“`
docker-compose exec workspace bash
“`

元記事を表示

【VirtualBox+Apache+PHP】共有ファイルのパーミッションエラーを解消する方法

VirtualBoxでCentOSにApacheをインストール。
共有ファイルで作成したtest.phpに接続すると、「You don’t have permission to access /test.php on this server.」と表示され、ページの表示ができなくて結構ハマりました、、、

無事解決出来たので手順を記録しておきます。

##環境
VirtualBox:6.1.28
ホストOS:MacOS Big sur 11.5.2
ゲストOS:CentOS7
Apache:2.4

##前提条件
「VirtualBox Guest Additions」をインストール済みであること
共有フォルダーのマウント方法は「自動マウント」にしていること

##エラー解消手順
エラーの原因は、ファイル共有をすることにより、ゲストOS(CentOS7)側のマウント先のフォルダの権限が強制的に「rootユーザまたはvboxsfグループ」のみしか読み込み権限が付与されていないからでした。

“`
# ls -la /var/www/
drwxrwx—. 1 root vboxsf

元記事を表示

備忘録~リファレンスについて~

##リファレンスとは(PHP)

###例1と例2を比較して理解しよう!
#####(例1)
“`
$a = ‘qiita’;
$b = $a;
$a[0] =’z’;
echo $a . PHP_EOL;
echo$B . PHP_EOL;
“`
上のコードを実行すると、

“`
zhp
php
“`
を返す。

#####(例2)
“`
$a = ‘qiita’;
$b = &$a;
$a[0] =’z’;
echo $a . PHP_EOL;
echo$B . PHP_EOL;
“`
上のコードを実行すると、

“`
zhp
zhp
“`
を返す。

###解説
変数(箱)の中に値(中身)が入っている。

・例1のような通常の代入は$aの変数の値を$bの変数に代入している。
訳すと、$aという名前の箱の中身を$bという名前の箱の中にコピーして入れている。
なので、$aの値と$bの値は別々で存在しており、三行目で変更しているのは$aの中の値だけである。

・例2はリファレンスを代入している。
リファレンスとは同じ変数を異なった名前で呼び出すこと。「あだ名」である。

元記事を表示

MAMP&DockerでXdebugを使えるまで。

#動いた環境

2021年10月28日時点
OS:MacOSX BigSur
CPU:M1チップ
エディタ:vscode
MAMP: Version 6.4(1182)

初めに以下の記事の通りに設定しました。

https://dezanari.com/mamp-xdebug/

vscodeのデバッグ再生ボタンを押すとステータスバーはオレンジになりますが、
ブレークポイントを貼ってブラウザでアクセスしても止まりませんでした。

それでググると以下の質問を見つけました。

https://teratail.com/questions/348559

この回答の通り、ポート番号を合わせると無事に止まりました。

MAMPのwebstartからphpinfoを開いて、

xdebug.remote_port とページ内検索するとポート番号が判明します。
![スクリーンショット 2021-10-28 15.39.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201982/fed870d0-ee1d-7

元記事を表示

クッキーとセッションとデータベース

## 概要
クッキーとセッションの違いをうまく説明できなかったので、クッキー、セッション、データベース、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

元記事を表示

OTHERカテゴリの最新記事