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

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

remi php74で、PDOないって言われる。

[php7でpdoのmysqlドライバーがない!?](https://teratail.com/questions/37882)より、

“`
yum install –enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
“`

70のところは既にインストールされたremi phpの数値と合わせましょう。
これ使ったらいけました。

元記事を表示

AWS EC2でPHPのexec()でpython3系実行

[Amazon LinuxでPython3系を使う](https://michimani.net/post/aws-using-python3-on-amazonlinux/)
こちらのブログの方法で解決しましたが、少し自分なりに足りないと思ったところを補足して紹介します。

### 大前提:Pyenvのインストール先は、/usr/bin/..にしよう。

他のブログでは、pyenvのインストール先は/home/ec2-user/…のところにあると思うのですが、ec2-userディレクトリは権限が厳しいので、その中にpython3をインストールして、例えば、exec(/home/ec2-user/…/bin/python3.7)とかしても、

“`
permission denied
“`

になります。
だからといって、homeディレクトリや、ec2-userディレクトリの権限を書き換えると、セキュリティの仕様?か何かで、scpやsshでサーバーに入れなくなるという恐ろしいことが起きます。(もしそうなっちゃったら、AWS ec2のインスタンスページからターミナルを開けば解

元記事を表示

AWS EC2のPHP関連でよく使うターミナルコマンド

インストールしたphp一覧

“`
yum list installed | grep php
“`

Apache再起動

“`
sudo service httpd restart
“`

php.iniファイルの編集

“`
sudo vim /etc/php.ini
“`

元記事を表示

データベースを使用して処理を書いてみる備忘録(同じ事前も書いたけど)

データベースの処理を前の記事でも書いたが再度復習として備忘録します。まとめます。

マイグレーションファイルを作成する。

今回は投稿記事としてarticleテーブルを作成します。

“`terminal:ターミナル
php artisan make:migration create_articles_table –create=articles
“`

パスは

database/migrations/2020_12_23_191814_create_article_table
で作られています。

中身は少し書き換えたんでデフォルトより書き換わってますが、

“`php:2020_12_23_191814_create_article_table

元記事を表示

【Laravel ver.8.x】ルーティングの設定(7.xからの変更点)

Laravelの勉強を始めた。
のはいいのだが、使っている本がver6.xベースである為
最新版である8.xからだいぶ様変わりしていて絶賛混乱中。

ということで、自分のためのメモ代わりとして記録。

初学者のため、間違い等ありましたらご指摘いただけるとありがたいです。

##開発環境
MacOS Catalina 10.15.7
Laravel 8.20.1
PHP 7.4.12
Apache 2.4.41
MySQL 5.7.32

##作成したコントローラのルーティング
MVCに準拠した形でコントローラを作成し、そのコントローラへのルーティングを通したい。

ver8.xからルーティングの書き方に大きな変更が加わった。
なぜこんな変更をしたのかはまるで分からない。
Railsしか触ったことがないので、~~めんどくさくて仕方がない。~~

想定しているコントローラはこんな感じ

“`HelloController.php

元記事を表示

Vagrant + Virtulbox CentOS7.8 を構築そして共有フォルダを作成した時にエラーで詰まった話

# Vagrant + Virtulbox CentOS7.8 + Laravel6系
上記の構成で環境構築した時によくホストOSとゲストOSとの
共有を設定する時にエラーで詰まって解決まで3日ぐらいを使って
やった事を書きます。

Vagrant関連はVersionに依存しまくるので
Version記載は意識して備忘録投稿します。

訳あってmacOS Mojaveです。
・ProductName: Mac OS X
・ProductVersion: 10.14.6
・BuildVersion: 18G6042

Homevrew で cask 一元管理
・vagrant 2.2.13
・virtualbox 6.1.16,140961

LAMP環境
CentOS7.8構成
・Apache/2.4.6 (CentOS)
・PHP 7.3.24 (cli)
・mysql  Ver 14.14 Distrib 5.7.32
※conf設定はそれぞれだと思うので省きます。

Composerをインストール
※インストール方法は長くなるので省きます。
・Composer version

元記事を表示

Laravelを使いSendGridでメールを送信する

#SendGridのアカウント登録

###アカウント登録時の注意点
SendGridのアカウント登録の窓口はいくつかありますが、今回は[公式日本サイト](https://sendgrid.kke.co.jp/)から登録を行います。

ほかの窓口としては[sendgrid.com](https://sendgrid.com/)やMicrosoft Azureから登録ができるようです。

※[sendgrid.com](https://sendgrid.com/)からアカウント登録を行うと、[公式日本サイト](https://sendgrid.kke.co.jp/)からはログインができないようです。
おそらく直接sendgrid.comに登録するものと、日本向けの正規販売代理店(KKE)を介して登録する違いによるものと思われます。

###アカウント登録
[公式日本サイト](https://sendgrid.kke.co.jp/)にアクセスし、メールアドレスを入力すると仮登録完了メールが届きます。

![3.png](https://qiita-image-store.s3.ap-nor

元記事を表示

【Laravel】ログインしていない(未認証)場合にログイン画面へリダイレクトする

#【Laravel】ログインしていない(未認証)場合にログイン画面へリダイレクトする

###使用環境
* XAMPP 7.3.18 (PHP 7.3.18)
* Laravel Framework 6.20.7
* windows 10

##背景
ログインセッションが切れたとき(未ログイン)にも特定のページが表示されていたため、ログインセッションが切れたらログイン画面へリダイレクトしたい。

##対処方法
###その1:コントローラーを使用する
使用するコントローラー内に“`__construct“` を記述する。
middlewareのauth設定により、使用するControllerを経由して行われる処理はすべて認証によるアクセスの制限が行われる。

“`php
public function __construct(){
$this->middleware(‘auth’);
}
“`
[Laravelのログイン認証の基本(Authentication)を完全理解する](http://reffect.co.jp/laravel/laravel-authen

元記事を表示

ローカルのjsonデータをphpからjavascriptに渡すときのSyntaxError解決策

javascriptでテスト用のjsonデータをローカルから読み込む必要があったのですが、ajaxを使用してローカルファイルを読み込もうとすると、クロスドメインによるエラーが発生します。
参考リンク:[JavaScript のクロス ドメイン (Cross-Domain) 問題の回避と諸注意](https://tsmatz.wordpress.com/2011/06/24/jsonp-cross-domain/)

そこで、一旦phpでjsonデータを読み込んでからjavascriptに渡そうとしたのですが、今度は、
「Uncaught SyntaxError: ” string literal contains an unescaped line break」
が発生しました。

どうやら、テストデータを作成するときに、最終行に改行が入っていたみたいです。
phpのrtrim関数を使用して除去したところ、うまくいきました。
参考リンク:[phpマニュアル “rtrim”](https://www.php.net/manual/ja/function.rtrim.php)

“`

元記事を表示

超爆速でWYSIWYGエディターを組み込む

こんなオーダーが。

「いい感じで記事をかける機能導入して!」
「ヘッドレスCMS使えばすぐできるから!」

ほほう。では軽く調査しよう。

〜数日後〜

いや、簡単にはできないですぜ。少なくとも使用するメリットないっすね。
そもそも、ランニングコストかかりますぜ。

「じゃあ**いい感じに**導入して!」
「できるだけ早くね!」

そんなこんなで、**超爆速**でWYSIWYGエディターを組み込んだ話を。

# 初めに

既存システムは割とレガシー。

– PHP 7.2
– Laravel Framework 7.25.0
– MySQL 5.7
– jQuery 3.5.1
– Bootstrap

# そもそもWYSIWYGエディターとは?

>WYSIWYG(アクロニム: ウィジウィグ)とは、コンピュータのユーザインタフェースに関する用語で、ディスプレイに現れるものと処理内容(特に印刷結果)が一致するように表現する技術。What You See Is What You Get(見たままが得られる)の頭文字をとったものであり、「is」を外したWYSWYG(ウィズウィグ)と呼ばれ

元記事を表示

PHP 5.6 → 7.3, Laravel5.4から5.7にアップグレードしたときのまとめ

Laravelバージョンアップ時に行ったことなどのまとめをします。

ぼくが行ったのは以下のphpとLaravelのバージョンアップです。

php 5.6 → 7.3
Laravel 5.4 → 5.7

## バージョンアップの基本手順
基本的なバージョンアップ手順としては

composer.jsonのphp,Laravelのバージョンアップさせる
composer update実行

該当するLaravelアップグレードガイドを見てcomposer.jsonの書き換えを行いながらバージョンアップをしていきます。このとき、5.4→5.5, 5.5→5.6といったように順番に上げていきます。

[Laravel5.5 アップグレードガイド](https://readouble.com/laravel/5.5/ja/upgrade.html)

## バージョンアップの注意点
####パッケージの依存関係エラー
composer update実行時に以下のようなエラーが出るときがあります。

“`
Your requirements could not be resolved t

元記事を表示

php のちょっと難しい単語まとめ

## 参照渡しについて
・参照渡しは、変数で値を渡す際にコンピュータに変数の住所を渡す(メモリの領域の住所を渡す)。
・参照渡しされたものはどこかで値が変更された場合、元の変数の値も変化する。
・通常の参照渡しを行わない場合、関数内でreturnを行うが参照渡しの場合は必要なくなる。

## コンストラクタ
・クラスのインスタンス生成時に実行されるメソッド。
・主にそのクラスのメンバ変数を初期化するときに使用

## アロー関数 ->
・左辺にクラスのインスタンスを取る、右辺には左辺のクラスがもつプロパティやメソッドを指定し、
プロパティへのアクセス・メソッドの呼び出しを実行する。

## 静的変数
・関数内に保存されるローカル変数
・通常、関数内のローカル変数は、関数の呼び出しが終了すると破棄される。
そのため、呼び出すたびに値を増やしたい場合は対応できない。
その場合、変数名に「static」キーワードを付けると、その変数は呼び出しが終了しても保存されるようになる。
言い換える

元記事を表示

メモリまわりのメモ

### 概要
PHPは、php.iniの中で設定されている。
基本的に一連の処理を抜けると自動的に開放される。
「memory_get_usage」は現在のメモリ使用量を出力。PHP スクリプトに割り当てられたメモリの量をバイト単位で返します。
「memory_get_peak_usage」は最大メモリ使用量を出力。メモリの最大値をバイト数で返します。

### PHPプログラムのメモリの使用量を確認する
$mem = memory_get_usage();
$mem = number_format($mem);
print(“Memory:{$mem}”);

### PHP.iniの設定
memory_limit = 256M

phpに直接書く

元記事を表示

Laravel の seeder がカオスになってきたのでフォルダ分けした

システムの継続開発が進むにつれ、システムに必要なデータもどんどん増えていく。
そして気づけば migration のフォルダも seeder のフォルダもファイルだらけで何が何やら・・・。ということに。
migration は時系列で並ぶのでまだマシだが、seeder は デフォルトで UserSeeder みたいな命名のファイルがあるので、それに釣られてしまった結果、どの seeder がどのときに追加したやつだっけ?みたいになりがち。

なので seeders フォルダの下にサブフォルダを切って、機能別に整理しようと思い立った。
単にフォルダを切っただけど「特定の seeder だけ実行したい」と言う場合や「Controller や Service クラスなどから実行できない」事態になる。

やることは以下の4つ。
1. seeder を任意にディレクトリ分けする
2. composer.json に記述を追加する (Laravel5 などの場合)
3. ディレクトリ分けした seeder に namespace の記述を追加する
4. seed コマンド実行時に namespac

元記事を表示

AWS EC2で、index.phpが表示されない?

[AWS EC2上にPHPサイトを立ち上げて、独自ドメインでアクセスできるようにするまでの全手順](https://qiita.com/harufuji/items/4fcd8f991fab5ad3354a#ssh%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B)
[AWSに登録してwebサーバーを立ち上げてみる](https://qiita.com/Hikery/items/b919ae9e35f0f66e6a95)

これらの方々の情報共有で最後のところまでいけたんですが(ありがたい..?)
なぜか、この最後の部分で引っかかってたんですが、sudo追加でいけました。

“`terminal
systemctl restart httpd.service
“`

“`terminal
sudo systemctl restart httpd.service
“`

元記事を表示

Synfony2 メソッド,フォーム,アノテーション チートシート

個人的なメモであります

#コントローラーメソッド
| メソッド名 | 説明 |
| ———————————- | —————————————————————————————— |
| generateUrl() | ルート名からURLを生成 |
| forward( ) | 指定した名前のコントローラーへ処理を引き渡しその結果を取得 |
| redire

元記事を表示

Laravel のwhereHasをwhereInに置き換える

## 追記
下記の方が、便利なライブラリを作成してくれています。
古のphpバージョンだと対応していない(未確認)ので、以降の記事は備忘録的な意味で残します。
https://qiita.com/mpyw/items/0761a5e44836c9bebcd5

# 難しいクエリを作りたくない
whereHasは遅い。激遅い。
left joinや、whereInすれば良いらしいと推測。
でもleft joinはコーディングがしんどいのよな……。

## 結論:whereInで頑張れば簡単だし改善はできるよ

### modelの関係性
usersはcommentsと「1対多」の関係。

### whereHasを用いた場合
#### 前提
* リレーション先のカラムでwhereしたい。
* 姓と名が別々のカラムになっており、concatでlikeしないとならない。(この条件は今回関係ない)

“`php5:UsersController.php
Comments::whereHas(‘Users’, function($query) use ($user_name){
$query

元記事を表示

【初心者】PHPの論理演算子について

#論理演算子とは?
論理演算子と言われてもピンとこないかもしれない。
ただ、それが何か言われると知っているし、使っていると思う。
`AND`や`OR`のこと。
例があると非常に分かりやすいが、これらが論理演算子ということを覚えておきたい。
###実際に使ってみる
“`php
//ANDを使する
$n = 40;
if($n >= 30 && $n <= 50) { echo($n)."は30以上かつ50以下です"; }else { echo($n)."は30以上かつ50以下ではありません"; } //出力結果 40は30以上かつ50以下です //ORを使用する $n = 40; if($n % 2 == 1 || $n >= 30) {
echo($n).”は30以上もしくは奇数の数値です”;
}else {
echo($n).”は30より小さい偶数です”;
}
//出力結果
40は30以上もしくは奇数の数値です
“`
`AND`は`&&`、`OR`は`||`と記述することが一般的?なのだろうか。

“`php
$n = 20;
if($n >= 30 AND

元記事を表示

EC-CUBE4 プラグインでマスターテーブルを追加する

#はじめに
初めての投稿となります。
よろしくお願いします。

仕事で始めてEC-CUBE4を利用したECサイトを仕事で制作しました。
その際、プラグインでマスターテーブルを新規追加することになったのですが、
テーブルの新規追加はよく見かけるのに対し、マスターテーブルの記事が少ないように感じたので作成方法を簡単に記事にまとめよう思います。

新規プラグイン作成方法については多くのサイトが存在するのでそちらを参考にしください。

#目標
マスターテーブル(mtb_sample)の新規追加。
管理画面>設定>システム設定>マスタデータ管理 へ登録。

#最終的なマスターテーブル
形は以下のしたいと考えています。

| id | name | sort_no | discriminator_type |
|:—|:————–:|:——-:|:—————————:|
| 1 | テスト1 | 1 | samplemtbconfig|
| 2 | テスト2

元記事を表示

GCP Cloud Vision APIでドラゴンボール表紙をOCRにかけてみた

## Cloud Vision API の 光学式文字認識(OCR)

Google Cloud Platform (GCP) > Cloud Vision API ではいろいろなものを検出できます。

先日 `光学式文字認識(OCR)` を利用してみて、精度の高さに驚きました。

そして、画像化した書籍は読めても、ではマンガはいけるのか、が気になっため、やってみました。

Cloud Vision API
https://cloud.google.com/vision

には 大きく、

– AutoML Vision
– Vision API

があり、

`AutoML Vision` はカスタムオブジェクトの検出などより高度なことができ、

`Vision API` は顔検出、ロゴ検出など、汎用的なオブジェクトの検出が手軽に利用できます。

今回は `Vision API` の `光学式文字認識(OCR)` を利用しました。

## 解析した画像

ドラゴンボールコミックなどの表紙を解析しました。

左 = 元画像と解析結果を重ねたもの
右 =

元記事を表示

OTHERカテゴリの最新記事