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

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

macOS 10.15 Catalina 上で phpenv を使って PHP 5.6 を build するのにものすごく苦労した話

## はじめに

この記事は [GMOペパボ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/pepabo) 19日目の記事です。

新しく入ったメンバーが macOS 10.15 Catalina 上で PHP 5.6 を build しようとしてハマっていたのを、いろいろ試行錯誤してなんとか解決した(というか回避した)ので、その話を書こうと思います。

## Mojave + XCode 10 から /usr/include がつくられなくなった

この話は、macOS 10.15 Catalina から始まった話ではなく、macOS 10.14 Mojave の仕様変更がそもそもの発端になっています。

どのような仕様変更があったかというと、Mojave + XCode 10 から `/usr/include` が作られなくなりました。 (`/usr/lib` は今まで通りあります)

じゃあ、ヘッダーファイルはどこにあるんだ?ということですが、次の場所にインストールされています。

– /Library/

元記事を表示

PHP7.4対応版Laradockを、ビルドしただけの話(2019/12/17時点)

この内容は2019/12/17時点の話です。
あなたがこの記事をご覧になっているころには、LaraDockが対策済みになっているかもしれません。
(きっとこの記事を書いている最中にでも修正されているに違いない。)

# 始めに
本記事はDocker ComposeのプロジェクトであるLaradockのPHP7.4対応版の、以下のサービスを動作させることを目的としています。

1. workspace
2. nginx
3. php-fpm
4. php-worker
5. mysql

他のコンテナの動作については言及しません。

# 各コンテナをビルドする際に変更したファイルと変更箇所
## 1. mysql/my.cnf
MySQL8を使いたいのでデフォルトに認証方式を変更する。

“`text:mysql/my.cnfの最終行に追記
+ default_authentication_plugin=mysql_native_password
“`

## 2. php-fpm/Dockerfile
–with-libzipオプションがなくなったから削除。

“`docker

元記事を表示

あの日見た言語の名前を僕はまだ知らない。~XAMPPでローカルDB(初歩)~

#初カキコ・・・ども・・・
俺みたいな専1でいきなりPHP触る、腐れ野郎他に、いますかって・・・・・・いるでしょう。

なぜ僕がPHPをやることになったのか、聞かれてはぐらかしていましたが、恥ずかしさを捨て去り此処に記します。
※前置きが長くなります。

#過去編
当時、僕は小学生でした。
毎日niconicoをニコニコしながら見ていた10年前のある時、ふと目に留まった動画がありました。それは・・・

**「絶対バグらないR〇G制作勉強会」**

当時、小学生高学年だった僕は「ウヒョー、ゲームだー」と飛びつきました。
長々と淡々に作り上げた、今は亡き制作したゲームの数々は古いPCと一緒に封印されました。

##~10年後~

実際にプログラミングでゲームを制作したことを覚えているものの、一体どうやって作っていたのか、なんの言語を使っていたのか。全て忘れてしまった僕「確か・・・HPS・・・?SPH・・・?PHP・・・?なら触ったことあるわいな・・・」等とコークハイを飲みながら友人と話した訳ですよ。

冬も訪れ寒くなってきたこの時期。私はPHPという2種3文字を見て、「へ、チョロいぜ!!」

元記事を表示

PHPStanによる静的解析をLaravelアプリケーションに導入するためにやったこと(レベル1編)

この記事は[Laravel #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/laravel-2)の19日目です。
そして去年のアドベントカレンダーの記事の続きです。

[PHPStanによる静的解析をLaravelアプリケーションに導入するためにやったこと](https://qiita.com/ngmy/items/1a8ef21c76d74c1d4dfe)

—-

## はじめに

弊社サービス「リネット[^1]」のLaravelアプリケーションのPHPStanをレベル1に上げました。
そのためにやったことについて書きます。

[^1]: 「[宅配クリーニングの『リネット』](https://www.lenet.jp/)」「[クリーニング×保管の『リネット保管](https://www.lenet-hokan.jp/)」「[布団クリーニングの『ふとんリネット』](https://www.futonlenet.jp/)」「[靴クリーニングの『くつリネット』](https://www.kutsulene

元記事を表示

Amazon Linux 2 で Remi Repository の php を使って php-imagick を動かす

# はじめに

Amazon Linux 2 で PHP を使うとなると `amazon-linux-extras` で php をインストールするのが簡単だが、今回は(現時点で) PHP 7.4 を使いたかったので remi リポジトリから PHP をインストールした。
この時に php-imagick を入れようとして四苦八苦したので忘れないようにメモ。

# 作業手順

まずは remi リポジトリを yum で利用可能にしていく。

“`bash
# remi には epel が必要
sudo amazon-linux-extras install -y epel
# remi repository を追加
sudo rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
sudo rpm –import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
“`

続いて PHP 7.4 のインストール

“`bash
# 必要なライブラリを先

元記事を表示

CakePHP4.1に導入されるかもしれないDIコンテナ「phpleague/container」を試す

本記事は [CakePHP Advent Calendar 2019](https://qiita.com/advent-calendar/2019/cakephp) の19日目のエントリーになります。

## はじめに

先日、待ちに待ったCakePHP4.0.0が [正式リリース](https://bakery.cakephp.org/2019/12/15/cakephp_400_released.html) されましたね :clap:

そして、気が早いのですが4.0系がリリースされたということは、次の大きなアップデートは4.1系のリリースということになります。(本当に気が早くてごめんなさい)

そんなこともあり早速 [4.1のロードマップ](https://github.com/cakephp/cakephp/wiki/4.1-Roadmap) をチラ見してみたのですが [Application](https://book.cakephp.org/4/en/development/application.html) の欄に以下のような記述があり、何やら面白そうな変化が起きそうだ

元記事を表示

phpからPDOでmysql接続できなかった話

phpでPODを使ってmysqlに接続すると、
Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user
このエラーが出てきて、ググった方法を試しても全く解決されなかった。
ユーザー名もパスワードも合ってるし、環境設定もできてるし、php.iniの設定もできてるし、ユーザー権限もALLになってるし、、、、
そこでもう一回上記の確認をしてみると、、、、、

あ!!!!!!!

ユーザー権限のdb名の部分が間違っていた、、、、
db名を今使ってる名前にして、楽々接続完了!!!

db周りの環境設定とかエラーとかすごい苦手だったけど、今回のことで少し詳しなったのでmysqlインストール後の設定方法に関して一応整理しておく。

①mysqlインストール
②php.iniでpdo部分のコメントアウト
③Apacheの再起動
④.bashrcにPATHを通す
⑤mysqlを起動後にユーザー権限を付与

とりあえず、dbのエラー発生したら、①PATHが通っているのか(.bashrc)②ユーザー権限が合っているのかを真っ先

元記事を表示

$_POST は万能じゃなかった!(困って学ぶ日々の備忘録)

痛い目に合いつつ学んだ内容をただ残していくだけの記事ですが、調べて日本語の記事があんまりなかったのでまずは簡単な内容でも助かる方がいるかも!と思い、公開。

タイトル通りですが、GET/POST で送られてくるデータを受け取る時は何もかも “`$_POST“` や “`$_GET“` で受け取ってしまえばいい、わけではないのです。
長い前書きは抜きにして、今日は「PHP “`php://input“` と “`$_GET / $_POST“` の違い、使い分け」について最近ちょっと困った結果学んだ情報を軽く整理してみました。

## “`$_POST“` は万能じゃない

受け取れる情報の量の許容範囲が “`$_GET“` よりあるからといって便利に思われがちですが、そうではにないことを最近実感した。
なんと・・・受信する殆どのデータが問題なのに、たま~にだけなぜか文字列が変なところで途切れたりして、構造が壊れ化けてしまうという・・・

ちょっと調べたら:
– XMLの受信
– JQueryからのAjaxリクエスト

には向いていないという。
今まであんまり意識

元記事を表示

CakePHPのドキュメント翻訳は英語学習とフレームワークのキャッチアップにつながる

この記事は、[PHP Advent Calendar 2019](https://qiita.com/advent-calendar/2019/php)の18日目の記事です。

# TL;DR

– CakePHPなどフレームワークの多くには、コミュニティでメンテされている日本語翻訳ドキュメントが存在する
– ドキュメントの変更を追って自ら翻訳対応していくことで、英語力とフレームワーク自身の理解が進む

# CakePHP Book

つい最近、メジャーバージョンアップ(**4**)がリリースされたことで話題(!?)のCakePHPには、開発者向けのドキュメントとしてCakePHP Bookというものが公開されています。

https://book.cakephp.org/4/en/index.html

CakePHPを触ったことがある方なら一度は訪れたことがあるサイトかと思います。CakePHPはOSSですので、もちろんこのサイト自体も、GitHubに公開されています。

https://github.com/cakephp/docs

こちらのサイトは、様々な言語で翻訳されており

元記事を表示

PHPでお問い合わせフォームを作る

# PHPでお問い合わせフォームを作ってみよう
つい最近までオブジェクト指向理解していなかったオイラです。
そんな人でも作れるお問い合わせフォームをPHPで作ってみましょう。

# 全体の流れ
1. 入力画面
2. 確認画面
3. 完了画面

てな感じで

じゃあ、もうちょっと細かくみてみましょう

### 入力画面
うん、これがないと始まらないですね。
今回はお決まりの以下の入力項目にしてみます
項目1 お名前
項目2 メールアドレス
項目3 お問い合わせ内容

お、お、ぉぅ 最低限の設定やね。。今後拡張していく予定なので我慢してください。。。

### 確認画面
そう、ここで入力した内容を表示して「送っていいですか?」って確認させます。

### 完了画面
要するに「ありがとうございました」ページです
ここでメール送信とかデータベースに接続とかいろいろあるけど、とりあえずはメール送信しときましょう

## 細かいとこ
とりあえずPHPで動く事を目標にするのでCSS等は後回しにします

# 入力画面
取り敢えず最低限のこのhtmlで

“`html:index.html

元記事を表示

画像の動的resize on Laravel

“`html

“`
って書いてて、あなんかこの画像やっぱ重いなぁと思ったら

“`html


“`

って書き換えるだけで

– サムネイル生成(初回アクセス時のみ)
– 2回目以後のアクセスは、キャッシュ画像に直接アクセス
– サムネイルは、画像の更新や指定サイズの変更タイミングで自動更新

される実装です。

“`bash:command
$ composer require intervention/image
$ php artisan storage:link
$ mkdir storage/app/public/cache
“`

“`php:DynamicImage.php

元記事を表示

php 連想配列の特定のキーの値を取得する

[array_columnを使う。](https://qiita.com/nbapps_dev/items/5b678946a2571eaf5e1d
)

“`
$targetValueArray = array_column($originArray, ‘id’); //keyがidの値を配列として取得
“`

[取得した配列の重複を削除したい場合、array_unique](https://qiita.com/y-encore/items/40ba694a8899ad1e9416)

“`
$uniqueArray = array_unique($targetValueArray);

//重複削除された際にキー(連番)が飛び飛びになってしまうため、添番を振り直す
$uniqueArray = array_value($uniqueArray);
“`

元記事を表示

【Laravel】PUT、DELETEリクエスト(疑似フォームメソッドについて)

Laravelのhttpメソッドではgetリクエストとpostリクエストしか対応していない。
公式ドキュメント(https://readouble.com/laravel/5.6/ja/routing.html)

PUTやDELETEを使う際には、formで一旦POSTメソッドを指定して、hiddenで_methodプロパティ(隠しメソッド)を投げる。(疑似フォームメソッド)

laravelのBladeではディレクティブが使える

“`php

@csrf
@method(“PUT”)

“`
要するにこういうこと

“`php



“`

元記事を表示

WebでLaravel のサンプルプログラムを動かせる Tinkerwell

# Tinkerwellとは
* Web上で実行できる Laravel対応のコードスペニット
* Laravel のコードをブラウザで動かして コードをURLで共有できます。
* 勉強やコードレビューなどで、実際に動くものを見せたりするのに便利そうです。

# 実行画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/21391/d1094e4f-2ffe-5300-6267-174b63eeb394.png)

* 右上の Save を押すと共有URLが 発行されます。
– https://web.tinkerwell.app/#/snippets/c6e09635-71d4-4073-882a-96a89b9a08d9

## あれこれ

* 初回開くと Loadingにめっちゃ時間かかります。今後の改善されることを期待。
* embed 対応してくれるとめっちゃ良いですね!
* デスクトップ版(有料)があるようです。 未調査です。

* Laravel の Tinker を

元記事を表示

オリジナルWebサービス -Lunches- (フルスクラッチ開発)

##はじめに
フロントエンジニアを目指してプログラミング学習をしている小林と申します。
本記事ではオリジナルWebサービス「Lunches」の概要や制作過程について説明します。

スクリーンショット 2019-11-08 午後5.15.02.png

##URL
リンク:Lunches

##目的
– フルスクラッチ開発でPHP、SQLの言語理解を深める
– Webサービスの基本的な構成、動作を把握する

##スペック
プログラミング言語:HTML5/ CSS3 / Javascript / PHP

データベース言語:MySQL

開発環境:macOS Catalina 10.15.1

バージョン管理:SourceTree

本番環境:さく

元記事を表示

Laravel6.xでパスワードリセットメールをカスタマイズする

## やりたいこと
* Laravelのauthで導入されるログイン機能は便利だけど、パスワードリセットやメール認証のメールが英語なので、日本語にしたい。
* 言語ファイルいじるだけでも日本語化は出来るが、できれば好きなデザイン・内容にしたい。

## 環境
* Laravel 6.x (執筆時点では6.5.2)

“`
$ php artisan –version
Laravel Framework 6.5.2
“`

* 事前に[認証機能の導入](https://readouble.com/laravel/6.x/ja/authentication.html)を済ませている。
* 具体的に言うと下記コマンドを実行済みで、プロジェクトも作ってある。

“`
$ composer require laravel/ui –dev
$ php artisan ui vue –auth
“`

## 大雑把な流れ
* Userクラスの通知関数をオーバーライド
* そこで用いるためのNotificationを作成、コーディング
* メール文面を作成

## 手順(パスワー

元記事を表示

初心者のためのセルフレビューチェック項目〜もうクソコードのレビューはさせない〜

## この記事について
新卒1年目のわたしがコードレビューで指摘された箇所を参考に、初学者がよく指摘されることとその対処法をまとめました。
どの言語にも共通することと、PHP / Laravel 限定のもの別にまとめてあります。
また、それぞれのミスについて、`指摘されたくない度`を星5つ満点で評価してみました 笑
レビューされるとき、レビューするときにこの記事に書いてあることが参考になればいいなと思います。

### 注意
– あくまでも弊社基準のレビューです
– VSCode 使っている人向けかもしれません

## 言語に関係ないイージーなミス

### ■ スペルミス
`指摘されたくない度★★★★★`
指摘されたら恥ずかしいやつ。

#### [対処法]
– VSCode 拡張機能 [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)
– スペルミスしてる単語を下画像のように波線でハイライトしてくれる

元記事を表示

Laravelにて「.env.testing」がうまく読み込まれないときの対処法

# はじめに
マイグレーションファイルを追加して、以下のコマンドを実行したのですが、「Nothing to migrate.」となり、マイグレーションが実行されなかったので、対処法をまとめました

“`bash
$ php artisan migrate –env=testing
Nothing to migrate.
“`

# Laravelのバージョン

“`bash
$ php artisan –version
Laravel Framework 5.8.29
“`

# 対処法
以下のコマンドを実行して、キャッシュをクリアすることで、マイグレーションが実行されました

“`bash
$ php artisan config:clear
Configuration cache cleared!

$ php artisan migrate –env=testing
Migrating: 2019_12_17_150625_create_hoges_table
Migrated: 2019_12_17_150625_create_hoges_table (0.0

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の4本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)
↑↑今ここ↑↑

# 前回まで

元記事を表示

Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編

# はじめに
Vue.jsとLaravelによるSPA実装のチュートリアル記事です。

本記事は、4本の連載記事の3本目です。

[Vue.js + LaravelでシンプルなSPA構築チュートリアル:概要編](https://qiita.com/minato-naka/items/2d2def4d66ec88dc3ca2)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:Vueフロントエンド編](https://qiita.com/minato-naka/items/9241d9c7a7433985056d)
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:LaravelAPI編](https://qiita.com/minato-naka/items/0e709cb0e6628c82c1c5)
↑↑今ここ↑↑
[Vue.js + LaravelでシンプルなSPA構築チュートリアル:VueとAPI結合編](https://qiita.com/minato-naka/items/9362ea5af5f823c95b0b)

# 前回ま

元記事を表示

OTHERカテゴリの最新記事