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

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

AmazonLinuxでPHPを5.3→5.6にバージョンアップする

### 概要
* PHP5.3を最新版ではなく5.6(もしくは何らかのバージョン)指定でアップデートしたい時の方法です
* PHP5.3はApache2.2系、PHP5.6はApache2.4系と依存関係があるので、一緒にアップデートする必要があります
* Apache再インストールの際にダウンタイムが発生するので、必要であればメンテナンス時間を設けましょう

### 流れ
1. サーバーの状態を確認
1. 現在のPHP,Apacheをアンインストール
1. アップデート対象バージョンのPHP,Apacheをインストール
1. (必要な場合)Apacheのhttpd.confを修正
1. Apacheを起動

### 手順
#### OSの確認
対象サーバーにSSHでログインして以下コマンドを実行

“`
# cat /etc/system-release
“`

#### PHPバージョンの確認

“`
# php -v
PHP 5.3.29 (cli) (built: May 12 2015 22:42:19)
Copyright (c) 1997-2014 The PH

元記事を表示

LaravelとSpringBootでDIコンテナを利用してみる

# はじめに
これは[ユアマイスターAdventCalendar2019の13日目](https://qiita.com/advent-calendar/2019/yourmystar)の記事です。
(社会人になってから学んだことをアウトプットする記事になります。)

## 今回の経緯
社会人になってからDI(依存性の注入)という概念を知りました。
WEBサービスの開発を行う際に、フレームワークを利用する場面は多々ありましたが、主に利用していた`Cake PHP`ではDIという概念は出ていなかったと記憶しています。
(記憶違いだったらすみません。)

DIは、インスタンスをnewで作成して利用するのではなく、DIコンテナやサービスコンテナ呼ばれるもの(SpringBootではDIコンテナ、Laravelではサービスコンテナと呼ばれます)を利用して、あらかじめ登録されたインスタンスを利用します。

今回は、業務で利用しているSpringBootでのDIコンテナの利用、最近独学で学んでいるLaravelでのサービスコンテナを利用してみるというテーマで記事を書いてみたいと思います。

##

元記事を表示

phpMyAdminが、AWS EC2複数台構成で接続できなかった件

同じ構成のEC2インスタンスを2つ用意して、ALBで振り分ける構成の案件がありました。
それぞれにphpMyAdminが入っており、接続先は同一のRDSです。

このphpMyAdminにログインしようとすると、エラーが表示されログインできない現象が起きました。
結論を先に書くと、対象のターゲットグループ設定の、維持設定を有効化にせいというアドバイスをもらい、解消しました。

調べてみたら、振り分けられてセッションが上手く処理できないから、ユーザー(ブラウザ)毎に割り振りを固定するってことみたいですね。

>スティッキーセッションはAWS専門用語では無く、ロードバランサー持つ一般的な機能の名称です。

セッション、インフラの知識を深めなくては:thinking:

参考:https://dev.classmethod.jp/cloud/aws/stateless_ec2/

元記事を表示

【Laravel】初心者から実務をこなしていくまでの6ヶ月にやったこと

CODEBASE2期生、新卒1年目の [@avocadoneko](https://twitter.com/avocadoneko) です。
仕事では主に Laravel / Vue.js を使って、開発をしています。

## この記事について

#### どんな人に読んでほしいか
– プログラミングを学び始めたばかりの人
– これから PHP, Laravel を学びたいと思っている人
– Laravel で開発している会社に入社する予定の人

#### 書いてあること
– 初心者が PHP と Laravel をどうやって勉強してきたか
– 仕事で学んだ Laravel のこと

#### 書いてないこと
– PHP、Laravel 以外のこと(Git とか Web のこととか他の言語とか)

#### 注意
– いくつか紹介している記事や動画では、Laravel のバージョンが古いことがあります。

## やったこと

### まずはPHPを触ってみる
#### ■ [Progate](https://prog-8.com)

[l</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>PHP</div>
<div class='tag-cloud-link'>Laravel</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/avocadoneko/items/7a457be22d47a3e122d7'>元記事を表示</a></div>
<h3 id=Laravel(5.8)のFormファザードサンプル

## 概要
見た目がスッキリするのでLaravelの拡張としてよく使うFormFacade、ただ書き方を忘れる事があるのでメモとして残しておく。
[公式はこちら](https://laravelcollective.com/docs/5.8/html)

## 環境
– laravel:5.8.*
– laravelcollective/html: ^5.8

## 前提
– old()はLaravelのヘルパーであり、直前のフォームに入力した値を取得する働きをする。
+ 第2引数は初期値
– BootStrap4を使っているのでformで使うclassを指定している

– セレクトボックス・ラジオボタン・チェックボックスで使う配列は下記のような形とする

“`php
$array = [
1 => ‘hoge’,
2 => ‘fuga’,
3 => ‘piyo’,
];
“`

## フォームの開始と終了
“`php
// 開始
{{ Form::open([‘route’ => [‘user.update’, ‘user’ => $user->

元記事を表示

Javascriptでテーブルの特定列の表示・非表示を切り替える

# 実装したいもの

HTMLのテーブルで、チェックボックスを用いて、列ごとに値の表示・非表示を行いたい。

– [x] 住所
– [x] 年齢

|氏名|住所|年齢|
|:-:|:-:|:-:|
|山田|東京|20|
|佐藤|神奈川|24|
|渡辺|大阪|18|

たとえば、上記テーブルで「住所」の列だけを、非表示になるようにしたい。

– [ ] 住所
– [x] 年齢

|氏名|年齢|
|:-:|:-:|
|山田|20|
|佐藤|24|
|渡辺|18|

こんな感じ。

# コード

以下のようにコードを記述する。テーブルはPHPで出力していてもよい。

“`sample.html

住所

元記事を表示

PHPExcelでcellごとに加工する

# はじめに
*これは、[いえらぶアドベントカレンダー](https://qiita.com/advent-calendar/2019/ielove)用に投稿したものです。*

– 文系エンジニア
– 入社1年目

とかいうプログラミング初心者が、特に下半期によくやったPHPExcelを使う案件で困ったことと見出した解決方法について書きます。
ググってもなかなか出てこなかった内容なので、同じ課題を抱えている人の参考になれば幸いですし、もしここ間違ってるよ、こうやったほうがいいよ、というものがあればコメントをいただけますと、めちゃくちゃ喜びます。

# 案件の経緯

あるとき、とあるクラウドサービスがありました。

そのサービスには、契約書をExcelで出力できる機能がありました。

出力した契約書には、契約内容が自動で入力されていました。

あら、なんて便利なんでしょう。

しかし、クライアントは言いました。

**「もっと使えるようにしてほしい」**
※もちろん、盛ったうえでの意訳です。

# 本題

要望が多岐にわたっていたので、いろいろやったんですが、
そのなかでもセルの加工に

元記事を表示

ハッシュ値(PHP)

##ハッシュ値とは
元のデータ数に関係なく、一定の長さ、また、同じ値を送ると同じハッシュ値がかえってくる値

例:aaa → ハッシュ化 → 17592735928795jewitjw
再度aaaをおくっても、同じになる。aをおくると、データの文字数は変わらない違う値が返ってくる

## phpで文字列をハッシュ化

“`:php
sha256(); //ハッシュ化関数
sha256(uniqid(mt_rand(), true)); //安全の高い一意なハッシュ値
“`
##ハッシュ関数の優秀度

md5 < sha1 < sha256(md5の倍) 優秀度が低いほど、簡単に生成できてしまう。 md・・・出力128bitのアルゴリズム sha・・SSL、SSHなどで用いられる暗号化アルゴリズム ##参考にさせていただいた記事 [PHPでユニークなIDを生成する](https://kakakakakku.hatenablog.com/entry/20081016/1224154493) [暗号化とハッシュ化に関する基本的な事柄まとめ](https://qiita.com/chr

元記事を表示

phpからJSON→JSで処理/描画できるサンプルをつくってみた

# 作った機能
FoldScrollという巻物風に内容をスクロールさせるUIをさらにphpで発展させてみました。
もちろんそのままでも便利なプラグインだが、phpで内容を自動的に入れられればより役割分担させられるという思いで作ってみました。

# 調べたこと
・FoldScrollの使い方
|- どこにデータがあり、どうやって表示させているかなど
・phpからjsに値を渡すにはどうしたらいいのか

# 成果物
スクリーンショット 2019-12-12 18.05.32.png
※スクロールすると巻物風に動きます

# [準備]FoldScrollダウンロード/使い方
[FoldScroll](https://github.com/soulwire/FoldScroll)

必要データをHTML内で読み込む

#

元記事を表示

Moodle 3.8 マニュアル – 1 and 1 共有サーバにおける cron

[原文](https://docs.moodle.org/38/en/Cron_on_1and1_shared_servers)

# 1 and 1 共有サーバにおける cron

次の情報は、1and1 FAQ から取られており、[Unix 又は Linux における cron](https://qiita.com/intrajp/items/5280702a152cd92f25d9) と併せて読まれるべきです。

これらのページでは、基本的なタスクを実行する方法が大変明確に説明されています。

* SSH 経由でサーバに接続する方法(ダウンロードと putty.exe という小さなプログラムの使用方法を含む)[http://faq.1and1.com/web_space__access/ssh/3.html](http://faq.1and1.com/web_space__access/ssh/3.html)(翻訳準備中)

* あなた自身の cronTest.php と呼ばれるファイルの作成・編集方法とそれを動作させるために必要なファイルのパスの見つけ方 [http://faq

元記事を表示

Laravelでリクエストとレスポンスを使用する

#はじめに
プログラミング初心者の@lifeblogplusです。

プログラミングを学習して躓いた事をQiitaにまとめさせていただいています。

今回はリクエストとレスポンスについて説明をしたいと思います。

#リクエストとレスポンスとは
リクエストとレスポンスとはクライアントとサーバーのやり取りを管理しているものです。

リクエストはクライアントからサーバーに送る情報を、レスポンスはサーバーからクライアントへ送り返す情報を管理しています。

リクエストとレスポンスはWebサイトへのアクセス処理としてとても重要な役割を果たしています。

#リクエストとレスポンスの使用法(Laravel)

###まずはアプリケーションの雛形を作りましょう。

今回はPracticeという名前で作成します。

コマンドプロント(ターミナル)で以下のコマンドを入力しましょう。

“`
Laravel new Practice
“`

これでアプリケーションの雛形は作成できたので、cdコマンドでPracticeフォルダの中に移動しましょう。

###コントローラーの作成

次に使用するコントローラ

元記事を表示

PHPUnitでプログラミングの理解度を測る試験を作れるんじゃないかという件-その4-

# 前回からの流れ
以下の作りたいシステムを設計中です。
前回はテストを受講するためのシーケンス図を作成しました。

### 作りたいシステム
使用者が試験を受けることで、どれだけプログラミングの要素を理解できているか、を確認できるシステム

* 試験の作成ができるだけ汎用的に行える。

* 競技プログラミング的なものではなく、できるだけ実務に近い試験を行える。

### 今回やること
テストを作成するためのシーケンス図を作成して、必要な画面とAPIを洗い出します。

### 今回作ったシーケンス図
![sequence_register.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/530225/a2867548-f133-f8c2-aff8-b456558b3302.png)

前回、書いたものは大分大きかったですが、こちらは割と適正な粒度になりました…
主に、時間管理系の要素が少なかったので、やり取りが少なく済んだのと、テスト説明情報の詳細をあまり考えていない(オイ
からですかね?

####

元記事を表示

PHP 7.2で pcre.jit の力を思い知った

# TL;DR

* RHEL7 + Remi PHP 7.2 のデフォルトは pcre.jit = 0
* 特定処理が死ぬほど遅いので注意しよう (ハマった)

# 特定の処理が遅い

弊社(デジタルサーカス株式会社)ではPHPベースのCMS Drupalを使って大規模なWebサイト構築をしています。
そのうちのとある案件で「AWS上のEC2にデプロイする時だけ死ぬほど遅い」という問題が発生しました。
開発者のローカル環境(macOS + VirtualBox)や社内開発環境(Linux + VirtualBox)では3分で終わる処理がEC2上では35分かかる。

インスタンスサイズは `c5.xlarge` であり、決してプアではない。RDSも `db.r4.xlarge` であり即座に問題とは言えなそう。なによりもっと小さいインスタンスで運用している別サイトでは同様の問題は発生していない。

# 結論

* RHEL7 + Remi PHP 7.2 のデフォルトは、`php.ini` に `pcre.jit = 0` と名指しで書かれている。
* `pcre.jit = 0` だ

元記事を表示

役にたつか立たないかわからないInteliJIDEの話 【随時更新していくよ!!】

# はじめに

勢いでIntelliJ All Products Pack買いました!
衝動買い楽しい。
せっかくだしちゃんと勉強しながら色々と使いこなせるようにメモします。
この機能の紹介をぜひー!とかこれ忘れてないなどあればどんどんお教えいただけますと幸いです。追記していきます!!
あと、サムライズムさんとかIntelliJとかお金もらってかいているわけではないです。

## 色々あるけど・・・

いろんな機能があって色々と扱えるものも違ってきます。
ちなみに最強はIntelliJ IDEA Ultimate Editionです。
plugin で追加さえすればめちゃめちゃ捗ります。

僕がweb開発とアプリする人間なので、それ以外にどうするべきなのかはわからないです。
値段は年間ですが、3年目まで毎年安くなっていきます。

## JavaScripter

webStormで要件を満たせます。
**年間6300円で、三年目だと3700円**です。

webStormは、**HTML/CSS、js, ts, coffe script**を扱うことができます。なので、フロントエンドだ

元記事を表示

Doctrineのドキュメント、Working with Objectsのページを意訳してみた【前編】

# はじめに

Doctrineは自分の思ったように動かないことが多々ありますが、
それはDoctrineの根本を自分が理解していないのでは?ということを考えました。
以下のドキュメントを読んでみることが、理解に役に立つのではと思い、英語を自分なりに意訳してみました。

Working with Objects
https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#working-with-objects

# Working with Objectsのドキュメントについて

ページの最初にもありますが、このドキュメントはEntityManagerとUnitOfWorkの理解を助けるためのページとのこと。
EntityManagerはDoctrineのORマッパーとしての中心的な役割を果たすクラスであり、
コネクションの取得からfindなどのオブジェクト取得、flushなどのクエリ発行を担っています。
UnitOfWorkとは、Doctri

元記事を表示

MWSでAmazonの最安値を取得する

MWSのサンプルだと設定が不足していて動かなかったのでメモ。

## 1. MWSのClientLibraryをダウンロード

https://developer.amazonservices.com.au/phpclients
※PHPです
「Products」をクリック。

#2. 「.config.inc.php」を編集

MWSProductsPHPClientLibrary-2011-10-01/src/MarketplaceWebServiceProducts/Samples/.config.inc.php
で、以下の項目を埋める。

+ AWS_ACCESS_KEY_ID
+ AWS_SECRET_ACCESS_KEY
+ MERCHANT_ID
+ MARKETPLACE_ID

以下も必要なので、「.config.inc.php」に追記。

“`
define(‘MWS_AUTH_TOKEN’, ‘***’);
“`

#3. 「GetLowestOfferListingsForASINSample.php」を参考に実装

必要なファイルを読み込む。

“`

元記事を表示

?【CakePHP2】自作配列をページネートさせる

## 環境

PHP 7.2.21
CakePHP 2.10.18

## 内容

ページネイトは便利機能であるが単純なfindのデータのみでしか出来ないっぽい
別DBに接続して得たデータやPHP側で修正をかけた自作の配列でもページネイトできればうれしい

ページネイトは内部でfindを実行しているのでControllerで用意した配列をセットしてそれをfindとして返すのみのページネイト専用Modelを作成してそれを利用した

## やったこと

Paginate専用のModelを新規作成し、Controllerでそれをuse
Controllerでデータを加工した後にPaginate専用Modelにデータをセットしてからpaginate関数にModel名を渡す

“`Model/CustomArrayPaginator.php

元記事を表示

ミャンマー語(ビルマ語)の文字コード問題で困ったら

#ミャンマー語の文字コードについて
ミャンマーは、歴史的な背景からインターネット技術の発展が世界から取り残された地域の1つ。
従来はZawgyi文字コードが主流でしたが、市場開放され国際化対応が進んでいく中、
UNICODEへ変わりつつあります。

日本の例では、EUCやSJISなどのWebがあった時代から、今ではUTF8に変わってきた歴史に似ています。
https://enjoy-yangon.com/ja/enyanblog/351-change-myanmar-font-zawgyi-to-unicode

#文字コード混在による文字化け対処の基本方針

現地人でなければ、文字自体が文字化けしているような文字なので、何が問題あるのかは我々エンジニア・プロラマーにすればわからないというのが本音。ただし、エンジニアなら、その問題解決に向き合う必要があります。

つまり、問題解決に必要な要件を決めて、ソフトウェアで解決する必要があります。

要件1 ZawgyiかUNICODEが文章で判定できる事
要件2 ZawgyiからUNICODEへ文字コード変換できる事

その2点が必須要件です

元記事を表示

文系PHPプログラマーの学び

この記事は[ゆるWeb勉強会@札幌 Advent Calendar 2019](https://adventar.org/calendars/4273)の12日目の記事です。

私はいわゆる未経験(HP制作経験のみあり)文系卒プログラマーです。
学生時代の1年ほどの独学と2ヶ月のオンラインスクールでの勉強を経て地方の小さなシステム開発会社でプログラマーとして新卒入社しました。
現在はプログラマーとして2年目です。主な使用言語はPHP。
自分ではあまりプログラマーに向いているタイプではない(寝食忘れてガツガツコード書いて楽しい!とはならない)と思っています。
その上数学的素養や情報系の知識も備わっているとは言えません。
それでも少しずつでもできるようになりたい。
というわけで自分の経験を元に文系卒のプログラマーの学び方を書いてみます。

#きれいなコードを学ぶ
「きれいなコード」は「簡素なコード」「認知負荷の小さいコード」ともいいます。
きれいなコードを書く技術は大変重要です。
大体どの言語でも問われるスキルなので、早めに身につけていくに越したことはありません。
逆にここに課題意識を持て

元記事を表示

今まで触れてきたコードを少しだけ改善する

# はじめに
この記事は、 CAMエンジニア Advent Calendar 2019 日目の記事です。

記事一覧はこちらから↓
https://qiita.com/advent-calendar/2019/cam-inc

今年も終わりに近づいてきました。
記事を書くのは初めてなので、何を書くべきか考えましたがなかなか思い浮かばす。どうしようかな?ん〜。
ま〜いつもやっている仕事の内容を書こうかなっと思いました。
現在私が携わっているプロジェクトは結構前からあるのですが、何年も前から存在しているコードだと人が入れ替わったり、時間的余裕などでその場しのぎのコードを実装してしまうことがよくあると思います。しょうがないのですがそれによって技術負債が溜まり、後にそのプロジェクトにアサインされた人が怒り狂うことは可能性として低くはないでしょう。
そこで今回の本題。会社に入ってプログラミング経験1年未満の私が、現プロジェクトのコードを改善し、ちょっとだけ読みやすいコードにしていこうと思います。
コードはPHP7、CakePHP2, controller内のお話です。
あと、ちょー初心者向け

元記事を表示

OTHERカテゴリの最新記事