- 1. 新人3ヶ月エンジニアが学んだPHP関数
- 2. なんで自鯖のフォントファイルをサイトビルダーで使えないんじゃ^~
- 3. 【PHP】Mixed Content(混合コンテンツ)が起きた際の対処法
- 4. CodeIgniterのルーティング設定
- 5. CodeIgniterの環境構築
- 6. 【AWS】AWS SDK for PHPを使ってSESでメールを送信する
- 7. 【Laravel】エラーページ のカスタマイズ
- 8. 【Laravel × Redis】No connections available in the pool…の原因と対処法
- 9. laravel6のIgnition問題
- 10. 読解メモ: PHP RFC: Make constructors and destructors return void
- 11. なぜサーバーサイド言語と合わせて、JabvaScriptを理解しておく必要があるのか。
- 12. 型を指定したからといって安心してはいけない(戒め
- 13. [php基礎] foreach文とif文を使って合計金額と最高価格を表示させる
- 14. PHP composerでext-httpエラーの解決方法
- 15. GuzzleでのAPI通信先でのデータ取得方法を知りたい
- 16. Laravel Log dailyログとerrorログを別々に出力する
- 17. 【PHP】添字配列をarray_mergeすると、配列の連番が0からになる
- 18. PHP7.4開発環境をUbuntuに作成
- 19. ラズパイで温湿度とCPU温度の取得とグラフの表示
- 20. nginx1.18 + php7.4.5 エラー対処メモ
新人3ヶ月エンジニアが学んだPHP関数
#新人3ヶ月エンジニアが学んだPHP関数
スクールでRailsを学び、晴れWebエンジニアになった私ですが
使用するフレームワークはLarabel 言語はPHPでした。
プロゲートでPHPを一周やって、あとはLaravelを触り続ける毎日で実務に突入したのですが
PHP関数は「ナンモワカラン」状態で、コードを読むのが大変だったので備忘録的に実務で使用していたPHP関数をまとめて置きたいと思います。##array_column()
“`
array_column(配列, ‘カラム名’, ‘カラム名’)
“`
配列から単一のカラムの値を返す
##array_values ()
“`
array_values ( 配列 )
“`
配列から全ての値を取り出し、数値添字をつけた配列を返します。##array_unique()
“`
array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
“`
配列から重複した値を削除する##array_merge()
“`
array
なんで自鯖のフォントファイルをサイトビルダーで使えないんじゃ^~
# 経緯
某Webサイトビルダーでサイトタイトルにフォントを使いたい
↓
カスタムコード機能でCSSを記述する“`css
@font-face {
font-family: “custom-font”;
src: url(“https://my-rental-server.sample/font/tsukaitai.ttf”);
}
h1#kakkoii-title {
font-family: custom-font, sans-selif;
}
“`
↓
chrome先生「“`Access to font at ‘https://my-rental-server.sample/font/tsukaitai.ttf’ from origin ‘https://suitbuilder.sample’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.“`」
↓
僕「ぴえん」
【PHP】Mixed Content(混合コンテンツ)が起きた際の対処法
## ■概要
ステージング環境から本番環境にデプロイした際、ページがHTTP表記になっており、
かつデベロッパーツールのコンソールにエラーが出ていた。
確認すると、
`Mixed Content: The page at ‘https://test.com/test/’ was loaded over HTTPS, but requested an insecure url ‘http://test.com/test/’. This content should also be served over HTTPS.`## ■原因
ステージング環境ではSSL対応をしていないため、
PHPで表示中のサイトURLを取得する方法がHTTPのままになっていた。
それにより、ブラウザからこのページに安全ではないURLが含まれているとアラートが出されていた。## ■対処法
始めは修正前の書き方をしていたので、プロトコルを変更すれば解決するが、
ステージングと本番環境によって出し分ける方法を取った方がコードとしてもきれいだと思い、
URLの取得方法を変えてみた。“`php:修正前
CodeIgniterのルーティング設定
#前提条件
ルートURLにアクセスすると
CodeIgniterのwelcomeページが表示される
(例)http://example.com/#課題
application/config/routes.phpの設定で、“`php
$route[‘home’]=’home/index’;
“`
というルーティングを設定しても
/index.php/home
にアクセスしなければindexメソッドが実行されないこれを/homeで実行できるようにしたい。
#apacheのmod_rewriteモジュールを使う
mod_rewriteでは、アクセスURLを別のURLに変換してアクセスさせるつまり、/exampleというアクセ
CodeIgniterの環境構築
#前提条件
以前書いた、PHP7.4の開発環境をUbuntuに構築する手順です。
これを参考に環境構築していただければと思います。[PHP開発環境構築](https://qiita.com/ftakahiro190307/items/159cb0e7cbeb20399eda)
#CodeIgniterのインストール
まずはプロジェクトディレクトリに移動し、ubuntuを立ち上げる
次に、立ちあげたサーバーにssh接続“`shell
$ vagrant up
$ vagrant ssh
“`公開ディレクトリに移動し、CodeIgniterをインストール
“`shell
#公開ディレクトリの一つ上の階層に移動(デフォルトの公開ディレクトリは/var/www/html)
$ cd /var/www
$ ls
html#CodeIgniterをインストール
$ wget https://codeload.github.com/bcit-ci/CodeIgniter/zip/3.1.11
$ ls
3.1.11 html#インストールしたzip形式のcodeig
【AWS】AWS SDK for PHPを使ってSESでメールを送信する
## はじめに
PHPでSESを使ってメールを送信したいが、ちょっとAWSの認証まわりが面倒くさかったり、
検索しても以前の情報とかがヒットしたりするので書いておきます。
認証まわりは色々やり方がありますが、AWS認証情報用のiniファイルを作成して実行する方法です。## 送信用のポリシーを作成する
SES送信用のポリシーを作成してください。“` JSON
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “ses:SendEmail”,
“Resource”: “*”
}
]
}
“`## SES認証用のユーザーを作成して、iniファイルを作成する
AWSのIAMでSES認証用のユーザーを作成してください。
ポリシーは上で作ったやつ。
作成すると、「Access key ID」、「Secret access key」が表示されるので、それを元に以下のiniファイルを作成してください。“`aws_crede
【Laravel】エラーページ のカスタマイズ
# 内容
laravelでは、エラーが発生したときに表示させるページがあらかじめ用意されています
例えば、404 Not Foundや500 Server Errorなどです
しかし、そのページをそのまま利用することは一般的にありません
そこでエラーページのカスタマイズを説明したいと思います
内容は少ないですが、備忘録として記録しておきます# 方法
resources/views/errors/以下にビューを配置すればOKです
ただし、ファイル名はエラーコードと同じにしなければなりません
例えば、404.blade.phpや500.blade.phpのようにです手作業でファイルを作っていってもいいですが、あらかじめ用意されているエラーページがわからなかったり、ページもれがあるといけないので、以下のコマンドを実行することをおすすめします
“`zsh
php artisan vendor:publish –tag=laravel-errors
“`これによって、resources/views/errors/以下に用意されているビューが生成されます(厳密にはコピーされます
【Laravel × Redis】No connections available in the pool…の原因と対処法
# はじめに
Laravelにて開発中、以下のようなエラーが発生したため、その原因と対処法を簡単に記します。“`php:laravel.log
No connections available in the pool {“exception”:”[object] (Predis\\ClientException(code: 0): No connections available in the pool at /var/www/application/vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337)…
“`エラーメッセージより
>Redisの接続に異常があると見当がつく。
# 原因
Redisへの接続情報に誤りがあった。
具体的には、Redisのホスト名が誤っていた。
根本原因は、AWS Systems Managerのパラメータストアで管理していた、Redisのホスト名に関する変数の値が古いままとなっていた。# 対処法
1. Laravelの.envを確認。
2. Redi
laravel6のIgnition問題
# 概要
システム保守の関係上、[JBNDB](https://jvndb.jvn.jp/)のRSSを常にチェックしているが、先日見た事ないような深刻度の脆弱性が出てきた。
・[Laravel 用の Ignition page における脆弱性](https://jvndb.jvn.jp/ja/contents/2020/JVNDB-2020-006168.html)
きゅ、、9.8!!!??? ( MAX10 )
これはヤバいという事で対応したが、すんなりいかなかった話。
# Ignitionとは
[GitHub](https://github.com/facade/ignition)
laravel6から採用されたComposerパッケージのエラ
読解メモ: PHP RFC: Make constructors and destructors return void
この記事は @carrotRakko が [PHP RFC: Make constructors and destructors return void](https://wiki.php.net/rfc/make_ctor_ret_void) を読み解いて自分なりにまとめなおしたものです。
英語の解釈や PHP の仕様/実装などなどについて間違っている部分を見つけたらご指摘くださると幸いです。
この記事を書いている時点で読んでいるリビジョンは [2020/07/02 23:13 のもの](https://wiki.php.net/rfc/make_ctor_ret_void?rev=1593731618) です。
# `__construct()` の返り値の型指定
型指定の仕方を3パターン考えてみます↓
1. 型指定なし: `__construct()`
1. 型指定あり & `void`: `__construct(): void`
1. 型指定あり & `void` 以外: `__construct(): bool`## PHP 7.4.x では(事実)
| 型
なぜサーバーサイド言語と合わせて、JabvaScriptを理解しておく必要があるのか。
PHPは通信を行わないと変化が起こらない。サーバーサイド。
例:現在時刻は、リロードした時にだけわかる。
JavaScriptは、通信がなくても変化が起きる。クライアントサイド。
例:現在時刻は、毎秒変わる。javascriptのデメリットは、データの保存ができない。その時その端末のみのアクション、データ、記録。
Ajax(非同期通信)=JavaScript
型を指定したからといって安心してはいけない(戒め
PHPネタです。
みんな強いから知ってると思うけど、僕は雑魚なのでメモがてら。
PHPにおけるキャストの動きをクラス生成(コンストラクタの挙動)を例に検証してみます。
PHP 7.3.11 で検証しています。### あまり意識してなかったキャストの挙動について
下記のようなコンストラクタをもつクラスについて、数値以外の引数を渡してしまった場合、
本来であればエラーとなって欲しい気もしますが、おそらく数値型にキャストされるだろうなと推測する方が多いかと思います。“`php
class MyTest {
private $param;
public function __construct(int $param) {
$this->param = $param;
}
}
“`案の定、数値型にキャスト可能な文字列が引数に入っていた場合、文字列->数値へのキャストが行われ、
正常にオブジェクトが生成されます。“`php
$obj = new MyTest(“1”);
var_dump($obj)// Result
o
[php基礎] foreach文とif文を使って合計金額と最高価格を表示させる
“`
$menus = array(
array(‘name’ => ‘CURRY’, ‘price’ => 900),
array(‘name’ => ‘PASTA’, ‘price’ => 1200),
array(‘name’ => ‘COFFEE’, ‘price’ => 600)
);
“`
上記の配列の合計金額と最高金額を表示させる。
↓“`
$totalprice = 0;
$maxprice = 0;
$maxname = ”;
foreach ($menus as $menu) {
$name = $menu[‘name’];
$price = $menu[‘price’];
echo $name.’は’.$price.’円です’;
echo ‘
‘;
$totalprice += $price;
if ($maxprice < $price){ $maxprice = $price; $maxname = $name; } } echo '合計金額は'.$totalprice.'円です';
PHP composerでext-httpエラーの解決方法
有益な記事がなく苦労したのでメモ
# 環境
PHP7.4(CakePHP3.5)
ローカル(mac mojaba 10.14.6)# PhpStormで拡張モジュールはcomposer.jsonに書かないと警告が出るらしい
簡単にまとめるとタイトルの通りext-httpも例外ではないらしい
> php拡張由来の定数や関数などに依存しているときにcomposer.jsonにその依存が明示されていることを検査するらしいでもそれを強制するってそんな大切か?って思うんですがw
詳しくは下記記事
# ネット上をサーフィンしまくって解決
“`bashProblem 1
– The requested PHP extension ext-http * is missing from your system.
Install or enable PHP
GuzzleでのAPI通信先でのデータ取得方法を知りたい
#結論
**POSTで送るなら$_POSTでいいじゃない!!!!!**“`
$postData = $_POST[‘hoge’];
“`これで取れます。
念の為
“`
if(isset($_POST[‘hoge’])){
$hoge = $_POST[‘hoge’];
} else {
// Error return
return 何らかのエラーコードなりをレスポンスすればよいでしょう
}
“`とすればきっと良いはず。
半日の時間は何だったのかという己の愚かさと
$_POSTとか数年ぶりに書いたので今もこの書き方で良いのだろうか
という疑問も新たに生まれた伸びしろと思いたい。
###ここからは元文
#$requestでデータが取れない
“`
$request->all();
“`できっとPOSTからのデータは取得出来るはず、、、
そんな簡単に考えていたら、半日ハマってしまっている。##環境
PHP7系(APIも)
Laravel Log dailyログとerrorログを別々に出力する
# 目的
– エラーログだけ別ファイルに出力して欲しい時の方法を下記に記載する。
# 実施環境
– MacのローカルにLaravelの環境を構築して実施する。環境構築手順の記事はリンクを後述する。
– ハードウェア環境| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |– ソフトウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac
【PHP】添字配列をarray_mergeすると、配列の連番が0からになる
###添字配列をarray_mergeすると、配列の番号が0からの連番になる
“`php
// 2つの配列をarray_mergeする
$array1 = [
‘101’ => ‘red’,
‘103’ => ‘yellow’
];$array2 = [
‘100’ => ‘blue’
];
“`
予想する返却値“`php
array(3) {
[100]=>
string(3) “blue”
[101]=>
string(6) “red”
[103]=>
string(4) “yellow”
}
“`
実際の返却値“`php
$array_merge = array_merge($array1, $array2);
var_dump($array_merge);
// 実行結果
array(3) {
[0]=>
string(3) “red”
[1]=>
string(6) “yellow”
[2]=>
string(4) “blue”
}
“`###例えば
以下のような
PHP7.4開発環境をUbuntuに作成
#前提条件
– virtualboxをインストール済
– vagrantをインストール済“`ruby:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :# All Vagrant configuration is done below. The “2” in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don’t change it unless you know what
# you’re doing.
Vagrant.configure(“2”) do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the onlin
ラズパイで温湿度とCPU温度の取得とグラフの表示
[エアコンをラズパイから操作できるようになった](https://qiita.com/yktk435/items/dabc790d6335e90dd416)ので、室温と湿度をから自動的にエアコンをつけたいと思った。
温湿度は前の[記事](https://qiita.com/yktk435/items/8bf45e8a96ea12ed457a)を参考にBME280で取得する。
ついでにラズパイのCPU温度も取得してグラフにする。まずは完成したグラフがこちら
![スクリーンショット 2020-07-02 16.14.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136271/3dbb3715-9ea6-d291-4b3a-a81ccc0c4db8.png)#コード
“`javascript
window.onload = function() {
view();
let sl = document.querySelector(“select.date”)
sl.value =
nginx1.18 + php7.4.5 エラー対処メモ
# 目次
– 前置き
– 環境#前置き
### **これはあくまで自分用のメモであり、また行う場合は必ずバックアップをとること**# 環境
– Amazon Linux2
– nginx1.18
– php7.4.5# エラー
## 404
– nginxがnginx.confで設定したrootに対してのパーミッション確認
– /etc/php-fpm.d/www.confをuser:nginx group:nginx にする
– その後sudo systemctl restart php-fpm でphp-fpmを再起動
– /var/log/php-fpmの所有ユーザーは初期ではapacheになっている
– chown nginx: php-fpm でnginxに変更する###