PHP関連のことを調べてみた2019年11月02日

PHP関連のことを調べてみた2019年11月02日
目次

Laravel6.0 で バリデーションをサーバ側とクライアント側(bootstrap4 + jquery validate)で行ってみたメモ

## 概要

[前回](https://qiita.com/hibohiboo/items/18810b64b8d92940d3b2)は一覧と作成ができることを確認した。
今回は、bootstrap4とjquery validationを使ったフロントのバリデーションも行った。

## Form用ライブラリのインストール

bladeでFormを扱うのが楽になるライブラリを導入した。

“`
composer require laravelcollective/html
“`

## Laravelでのバリデーション
### migration用ファイルの作成

今回作成するマスタのテーブルを作成するモデルを作成。

“`php

元記事を表示

Apache で PHP と http2 を両方利用するための MPM の選択

# おことわり

当方は専門家ではなく、自身の経験や Google に頼った結果を基にこの記事を書いています。誤りが含まれる可能性が大いにありますので、この記事の内容は参考程度に留めるようお願いします。また誤りを発見された場合はお手数をおかけしますが編集リクエストよりご指摘いただけると幸いです。

# MPM の種類

Apache には現在 `prefork` `worker` `event` の3つの MPM が存在する。それぞれの違いについては [こちら](https://milestone-of-se.nesuke.com/sv-basic/linux-basic/apache-mpm-prefork-worker-event/) などを参考にされたし。

# それぞれの対応

| MPM の種類 | PHP の利用 | http2 の利用 |
|:———-|:———–:|:———–:|
| prefork | ◯ (mod_php) | × |
| worker | △ (※) | ◯

元記事を表示

Moodle 3.7 マニュアル – アップグレード概要

[原文](https://docs.moodle.org/37/en/Upgrade_overview)
# アップグレード概要

Moodl の最新で最高のバージョンの素敵な機能を次の 4つの簡単なステップでを楽しみましょう。

# ステップ1: あなたのサーバで Moodle 3.7 が動作するか確かめる
(注: 3.7 にアップグレードするには、少なくとも Moodle 3.2 にアップグレードする必要があります。)

Site administration > Server > Environment に行ってください。

ステータスは全て OK ですか? 素晴らしい!では、ステップ 2 に、
何か問題がありますか? サーバのソフトウェア(PHP のような)をもっと最近のバージョンにアップグレードする必要があるかもしれません。

# ステップ2: 準備しよう!

いつもの大きなアップグレードのように、あなたのデータ、あるいはあなたが追加済みのカスタムコードに何か問題があった時のために、常に “ロールバック” に備えるべきです。

A test install
__テストインス

元記事を表示

Laravel5.8の環境をDockerで構築する(忙しいあなたに)

# 忙しいあなたにチャチャっとDocker for Laravel

## 参考

[Laravelの環境をDockerで構築するチュートリアル](https://tech.windii.jp/backend/laravel/laravel-with-docker-compose)

## 概要

上で載せたDokcer for Laravelの記事がクソ有能なのでめっちゃ見させてもらってるけど、
パッて使いたい時に説明読むのしんどいので自分用まとめ記事です。

> 自分用なので大分言葉足りずだと思います。

## 環境

– Laravel5.8
– PHP7.3
– MySQL57

## ディレクトリ構造

> `app`がLaravelディレクトリ

![スクリーンショット 2019-11-01 17.13.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293438/fa6c84b9-8d7c-8e5c-3771-1d9b70a26a47.png)

## docker-com

元記事を表示

PHPで緯度経度から8分の1メッシュコードを取得する

PHPで8分の1メッシュコードを取得する関数を作成しました

“`php
function calculateMeshCode($lon, $lat){
$p = floor(($lat * 60) / 40);
$a = fmod($lat * 60.0, 40);
$q = floor($a / 5);
$b = fmod($a, 5);
$r = floor(($b * 60) / 30);
$c = fmod($b * 60, 30);
$s = floor($c / 15);
$d = fmod($c, 15);
$t = floor($d / 7.5);
$e = fmod($c, 7.5);
$tt = floor($e / 3.75);

$u = floor($lon – 100);
$f = $lon – 100 – $u;
$v = floor(($f * 60) / 7.5);
$g = fmod($f * 60, 7.5);
$w = floor(($g * 60) / 45);
$h =

元記事を表示

【WordPress】ACFを使用し、チェックリストとテキストエリアの内容を足した文章を、特定の文字数以降は省略して表示する

##なにこれ?
個人的なメモ。
ACFで作った花名をチェックリストで選択し、リストにない花名が合った場合は「、」の後に「その他の花名テキスト」を表示。
PCの時のみ、2行を超えたら「…」で省略。
しっかり自分で書いたの初めてかもしれないので、見ちゃった人は生暖かい目で見て・・・でも間違ってたら教えて下さい。

##コード

“`php:ファイル名.php

元記事を表示

LAMP環境をソースインストールする(PHP5.6.40)

* PHP (バージョン5.6.40)をソースからインストールします。
前回に引き続きPHPをソースからインストールします。途中、再インストール等していますので、一発でソースインストールしたい方は一度すべて目を通していただけますと幸いです。

– PHPの依存関係にあるライブラリのインストール

参考にしたURL:http://php.net/manual/en/install.unix.apache2.php
公式のURL:http://php.net

– libxml2
XMLを解析・操作するC言語のライブラリです。

公式のURL:http://www.xmlsoft.org/

カレントディレクトリは/usr/local/srcです。
ソースファイルをダウンロードし、展開します。

“`
$ pwd
/usr/local/src

元記事を表示

保存版 JavaScript <=> PHP の文字列操作対応リスト

フロントエンドとバックエンドにおいては分業が当たり前のこのご時世ですが、僕はちょうどお互い半々で仕事を頂けているので備忘録も兼ねて対応表を作成しました。

普段自分が担当している分野の反対側を扱わなくてはならなくなったときや、一人でフロント・バック両方開発するとき、もしくは暇つぶしにどうぞ。

※目次・各項目に書いてあるコードは __JavaScript__, __PHP__ の順です。

# 追加・結合

## 結合 “`’hoge’+’fuga’“`, “`’hoge’.’fuga’“`

“`sample.js
‘hoge’+’fuga’;
//’hogefuga’
“`

“`sample.php
‘hoge’.’fuga’;
//’hogefuga’
“`

最も基本的かつよく使う文字列を繋げる処理ですが、この時点で JavaScript と PHP の差を感じます。

普段 JavaScript を使用している開発者には違和感を感じる「.」での連結ですが、これは PHP が Perl に影響を受けて開発されたことによるものと思われます。
[PHP 公式マニュ

元記事を表示

ダブルクオートを使う必要がある場合

ダブルクオートを使う必要がある場合

“`
# htmlタグの属性指定
aaa

# シングルクオートを表示したいとき
$text = “わたしは'” . $name . “‘です”;

# テキストに変数を内包させるばあい
$text = “わたしは$nameです”;
“`

元記事を表示

コードシェア用

“`classes/User.php
conn->query($sql);

if($result>num_rows == 1){
$row=$result->fetch_assoc();

元記事を表示

【月額400円~】安くてカンタンが売りの Amazon Lightsail に Laravel 環境を構築して最安運用する手順

# TL;DR

* AWSでLaravelするのに必要なコストは **400円/月**。
* 月額$3.5のLightsailインスタンス1台に、PHP/LaravelとMySQLを入れる手順です。
* インストールの待ち時間を含めて **20~30分くらい**

# Amazon Lightsail とは?

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129854/2f4ff7e9-c2e4-949d-17b8-334298c6a57d.png)

* 最安値AWS。EC2を1台使うより安い。
* レンタルサーバーと同じ価格帯で使える VPS。
* AWS史上最もカンタンにサーバーが立ち上げできる。EC2やRDSの構築をカンタンにしたBeanstalkよりもさらにカンタン。
* あの転送料も完全コミコミプラン。「AWSは**従量課金だから実際使うまで料金がわかんない**よね」がない。\$3.5と言ったら \$3.5以上取らない。※注:上限はあります

EC2やRDSをカンタンに

元記事を表示

Laravel の Route Model Binding で主キーをハッシュ化したものを使う

## はじめに

Laravel でアプリケーションを作っていく際に、何らかの理由で URL に主キーをそのまま表示させたくない場合どうしたらいいか、そこらへんを書いていきます。

例:
`https://example.com/posts/1` ではなく
`https://example.com/posts/Lk6-W7gbKmv ` にしたい場合。

## 環境
Laravel 6.x

## インストールと設定
Laravel のインストール:

“`
composer create-project –prefer-dist laravel/laravel foo
“`

プロジェクトルートに移動:

“`
cd $_
“`

主キーをハッシュ化するのに便利なライブラリをインストール:

“`
composer require vinkla/hashids
“`

Laravel Hashids の設定ファイルを作成:

“`
php artisan vendor:publish
“`

リストが表示されるので `Vinkla\Hashids\HashidsSe

元記事を表示

Laravel の Form Request Validation と Yii の Model を継承したフォームクラスの違いについて

## はじめに
Laravel と Yii どちらともにアクション毎にフォームのバリデーションを分けたいとき、Laravel では Form Request Validation、Yii では Model を継承したフォームクラスを使えるんですが、役割に若干の違いがあるので、そこらへんをまとめたいと思います。

## 環境
Laravel 6.x
Yii 2.x

## Laravel Form Request Validation

モデル:

“`php:app/Models/Post.php
declare(strict_types=1);

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
protected $table = ‘post’;

protected $fillable = [
‘title’,
‘content’,
];

// …
}
“`

Form Req

元記事を表示

Rapberry pi 個人的環境構築まとめ

ラズパイを触ることになったので、初期設定、環境構築方法をまとめておきたいと思う。

#まずは以下の記事を参考にSSH接続ができるまでの初期設定
[Raspberry Pi Zero W 環境構築ことはじめ MacOS編](https://qiita.com/hiesiea/items/67ead05a4c3aa5d47ce7)
[RaspberrypiでSSHができなくて試したこと](https://qiita.com/hayate242/items/0de7a98f6fea0dabf04c)

#ラズパイをアクセスポイント化。
[RaspberryPiでルーターを自作し無線AP化](https://qiita.com/wannabe/items/a66c4549e4a11491f9d5)
ここで、apt-get updateとupgradeをサボったら詰まった。

#ラズパイをファイルサーバー化、Apacheを導入してPHPによるアクセスを可能にする。
[raspberry piをファイルサーバー化](https://qiita.com/ryuichi1208/items/4420d

元記事を表示

WEBのドキュメントをPCへ落とさずにブラウザで読むには

# はじめに
インターネットには様々なドキュメントが存在し、必要に応じて読む必要があります。
しかし、自分のPCにダウンロードした時点で**マルウェアの侵入など問題**が多いのも事実でしょう。

ご紹介する内容は汎用のブラウザ(全ての端末)でインターネット上のドキュメントを
ダウンロードする事無くブラウザ内で安全に表示して読む為の一例です。

この方法で**Facebookのメッセンジャー、Slack、RoundCube、Cybose**等の添付ファイルもWEBで読む
事が出来るようになりました。Gmailが嫌という方におすすめです。是非試行錯誤してください。

#### 1.ダウンロードの問題
– PCに不要なデータが溜まる
– PCにはアプリケーションが必要
– ドキュメントに危険なスクリプトが含まれている可能性

#### 2.この開発に於ける目標
1.ダウンロードを禁止したブラウザ環境でWEBのドキュメントがブラウザ上で閲覧できる事。
2.Google、MS-Cloudとの連携でドキュメントの編集まで可能でそのまま転送できる事。
3.圧縮ファイルの内容をブラウザ上でリストアップ

元記事を表示

Apache ssl化まとめ(Dockerでも使えます)

https://qiita.com/Diwamoto/items/08a46096743cd89c6d06
の続きです。

#やりたかったこと

・セキュリティの勉強をして、httpsとは何かを学んだ。
・ちょうどDockerで環境作りをしていたので、ついでに自分のローカル環境もssl化するいいタイミングだった。
・ワイルドカードでVirtualHost設定してるしsslもワイルドカード証明書あるっぽいからワイルドカード証明書作ってそれさえあればどのプロジェクトでも自動でssl化できる様にしよう!!

####しかし、世間はそんなに甘くなかったのです。。。

ローカル環境の完全ssl化は長く辛い物語でした。

# つまづきその1

まずやろうと思ったのがDockerfileにてopensslコマンドでbuild時にワイルドカード証明書を作成し、それで運用しようとしたのですが

“`Dockerfile
RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/ssl-cert-sn

元記事を表示

シーザーの犬ぞりゲーム.php

#オレはやるぜ
![images.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/417953/7c57122a-6678-feed-2697-d0fc7266dd63.jpeg)

いわゆる「ズンドコキヨシプログラム」です。
ズンドコのままでも別にいいんですが、そこまで熱狂的なきよしファンでもないし
好きな言葉で遊んだ方が面白いよなーと思って
ちょうど読んでた「動物のお医者さん」からシーザーに頑張ってもらいました。

「オレは」「やるぜ」をランダムに出力して「オレはやるぜオレはやるぜ」になったら
「オレはやったぜ!」と表示して終了します。

“`php:yaruze.php

元記事を表示

phpの圧縮について

# phpの圧縮を考える
## 背景
* 自社サービスでcacheとしてredisを使ってるもののredisのサイズがバカにならなくなってきた
* redisのDBサイズが大きくなってくるとBGSAVE時にi/oが出てサイトが遅延するケース(?)
* redisの使い方が雑なのでお手当してサイズ圧縮したい

## 現状のredisへの保存
“`php
protected function _getUserList() {

$userList = array();

$key = __METHOD__;
$cacheRes = Cache::read($key);
if ( $cacheRes ) {
$userList = $cacheRes;
return $userList;
}

$userList = UserDb::selectUserList()
$ret = Cache::save($key, $userList , 60);
return $userList;
}

# 保存内容は利用者に任せているのでバカでかいarr

元記事を表示

Objective-PHPを初心者がまとめてみた<フレームワークの概念>

# フレームワークとは
PHPは実装の仕方が実装者によって千差万別であるため、
「一人で全てのプログラムを実装して、その後の修正もその人が行う」
のであればそれでもいいのかもしれないが、
他の人と協力して実装する場合、ある一定のルールがないと管理できない。
そのため、ある程度の基礎的な枠組みを作っておいて、
アプリ開発の際はその枠組みを用いる(コードを書き加えたりする)ことで、
(その基礎的な枠組みを知っている)自分以外の他の人がコードを見ても実装したい内容が共有できる。
つまり、統一されたルールの中で多人数で実装が可能になる。
その基礎的な枠組みをフレームワークと呼ぶ。
フレームワークを用いることで、下記3点のメリットがある。
####⑴アプリ実装の労力の軽減
“`
composer create-project –prefer-dist laravel/laravel {プロジェクトの名前}
“`
とターミナルに入力するだけで、最低限必要なフォルダやファイルが一括で多数実装できるので楽。
####⑵保守性の確保
Web開発では、開発途中に要件の追加が発生することがよくある(ら

元記事を表示

php7.2からeach()関数は非推奨になった

この関数は、配列のkeyとvalueのペアを返す関数ですが、
foreachよりもループが遅く、PHPそのものの変更に伴って実装上の問題を引き起こしたことから非推奨になったそうです。

通常はlist関数と併用することが多いですが、普通にforeachを使えば十分なのであまり困ることはないかと思います。

“`php
// 関数サンプル

$foo = [“test1”, “test2”, “test3”, “test4”];
$bar = each($foo);
var_dump($bar);
“`

“`
出力結果
ーーーーー
array(4) {
[1]=>
string(5) “test1”
[“value”]=>
string(5) “test1”
[0]=>
int(0)
[“key”]=>
int(0)
}
“`

なお、PhpStorm(本環境は2019.2)上では下記のように非推奨関数として打ち消し線が表示されています。

![スクリーンショット 2019-10-31 11.23.58.png](https://qiita-im

元記事を表示

OTHERカテゴリの最新記事