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

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

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

[原文](https://docs.moodle.org/37/en/Upgrading_FAQ)

内容

[1 1.9.x から 3.7 にアップグレードするには?](#1-19x-から-37-にアップグレードするには)
[2 Moodle をアップグレードするには? ファイルをただ上書きすべきですか?](#2-moodle-をアップグレードするには-ファイルをただ上書きすべきですか)
[3 “Upgrade already running in this session, please wait!” というメッセージが出ます](#3-upgrade-already-running-in-this-session-please-wait-というメッセージが出ます)
[4 一度に一つ以上のアップグレードが可能ですか](#4-一度に一つ以上のアップグレードが可能ですか)
[5 カスタムコードがサイトに存在します-どのようにアップグレードしますか?](#5-カスタムコードがサイトに存在します-どのようにアップグレードしますか)
[6 もっと質問がありますか?](#6-もっと質問があります

元記事を表示

Apache、PHPをDockerで作る

# これは何?
DockerでApache、PHP7.0のコンテナをチャチャッと作ったときのメモ。

# 内容

`Dockerfile`、`etc_apache2_conf-enabled_docker-php.conf`、`var_www_html_index.php`を同じディレクトリに保存する。

## Dockerfile
“`dockerfile:Dockerfile
FROM php:7.0-apache

COPY ./etc_apache2_conf-enabled_docker-php.conf /etc/apache2/conf-enabled/docker-php.conf
COPY ./var_www_html_index.php /var/www/html/
“`

“`php:var_www_html_index.php

SetHandler applicat

元記事を表示

PHPでログインパスワードとデータベースに保存している暗号化したパスワードを照合する

こんにちはジャムです。

今回はPHPでログインフォームから、パスワードを入力した際にデータベースに保存しているパスワードと照合する場合の方法を解説します。

##ソースコード

“`php5

“`

##使用方法
####1.暗号化された$hashの値をデータベース等に保存しておく。
####2.password_verify関数で入力したパスワードとデータベースに保存したパスワードを照合する。
####3.終

元記事を表示

【PHP】Laravel 学習メモ / 簡易アプリで流れを掴む2(受け取ったデータを計算して完成まで)

##前回まで
前回までで画面を表示させるところまで完成しました。
[【PHP】Laravel学習メモ / 簡易アプリで流れを掴む1(表示まで)](https://qiita.com/kota_sho/items/06c09033bddf682d08a0)

##今回で完成
今回は、入力されたデータ(米ドル)を受け取り、日本円に換算して表示するところまで実装して、完成としたいと思います。為替は、今回1ドル=110円として計算します。

##完成動画
![66f8e35a38f4ce0d1865297836b5011e.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496614/b186e56b-d74c-1f95-c583-5039b2fbe980.gif)

コードを追ってみましょう。
##ルーティング
ルーティングは前回で終わっているので、そのまま使います。
本来Webサービス、アプリではもっと多くのルーティングを設定しますが、今回のアプリはトップページのみで動かす為、1行のみです。

routes

元記事を表示

【PHP】Laravel 学習メモ / 簡易アプリで流れを掴む1(表示まで)

###〜簡易アプリで流れを掴む1(表示まで)〜

PHPのフレームワークであるLaravelの流れを掴むために簡単なアプリを開発してみます。

2回に分けて実装していきます。
次回、
[【PHP】Laravel学習メモ / 簡易アプリで流れを掴む2(受け取ったデータを計算して完成まで](https://qiita.com/kota_sho/items/e81397df99df3b884c6b)

##目標アプリ
入力した米ドルを日本円に換算する。

##開発環境:
PHP 7.1.23
Laravel Framework 5.8.35
Composer version 1.9.0

開発環境が一通り終わっているという状態からのスタートとします。

###公式ドキュメント 
https://readouble.com/laravel/

##今回の目標
以下の画面まで表示させる
スクリーンショット 2019-11-04 13.33.32.pngELB配下のEC2にCakePHPアプリケーションを置いたらCSSが当たらない

# 概要
自社開発したサービスをELBにぶら下げたEC2インスタンスにデプロイしていざアクセスするとリダイレクト処理が繰り返し行われるというエラーが起こった。[AWSで構築されたサイトをSSL化しようとしたらリダイレクトループではまった](https://qiita.com/tihimsm/items/2c58a3425e446261940b)を参考に.htaccessを編集してそれを解消したら今度はcssが当たらないという状態になり。きっと.htaccessがまだ間違ってるんだろうと深みにハマった。結局、ELBの仕組みを把握してないことから招いたエラーだった。

# 結論(原因と変更)
– 構成: ->port443->ELB->port80->EC2
– ELBからEC2への通信にはポート80で通信していた。
– コード中でポート80での通信の時はフルパスをhttp://~に設定する記述をしていた。

“`
if($_SERVER[“HTTP_PORT”] == 443){
define(‘SITE_URL’, ‘https://’ . $_SERVER[

元記事を表示

【Laravel5.8】Eagerロード先テーブルは必ず主キーもSELECTしないといけない

テーブルBと、B.idにリレーションを張ってるテーブルAがあったとします。

モデルは普通。

“`php:モデル
// モデルA
class TableA extends Model{
// テーブル名
protected $table = ‘table_a’;

/**
* リレーション
* @return BelongsTo
*/
public function tableb()
{
return $this->belongsTo(TableB::class, ‘b_id’, ‘id’);
}
}

// モデルB
class TableB extends Model{
// テーブル名
protected $table = ‘table_b’;
}
“`

コントローラとテンプレも普通。

“`php:コントローラ
$tableas = TableA->get();
“`

“`php:blade
@foreach ($tableas as $tabl

元記事を表示

grpcをさくらのレンタルサーバにインストールする(さくらインターネットのPHPサーバ)

# grpcをさくらのレンタルサーバにインストールする(さくらインターネットのPHPサーバ)
1. pearをインストール
2. composerのインストール
3. grpcをインストール
4. php.iniに記述
5. php バインドする

## pear

“`bash:bash
mkdir -p ~/workspace
mkdir -p ~/tmp
cd ~/workspace
wget http://pear.php.net/go-pear.phar
php go-pear.phar
“`

以下になるように設定

“`bash:
1. Installation base ($prefix) : /home/{username}/pear
2. Temporary directory for processing : /home/{username}/tmp/pear/install
3. Temporary directory for downloads : /home/{us

元記事を表示

MySQLの「0000-00-00 00:00:00」のdatetime型をCarbonオブジェクトで判別する

MySQLのDatetime型で、うかうかしていると「0000-00-00 00:00:00」というデータが格納され、
Carbonでそのデータを引っ張ると「-0001-11-30」という不思議な日付が返ってくることに悩まされました。

試行錯誤してみて、

“`php
echo $thatTime->year;//-1
“`
という値が返ってくるのがわかったので、

“`php
if($thatTime->year === -1)
“`
という判別式で除外できるな、と。

紀元前を扱うことのないシステムであれば、これで十分そうです。

小ネタですが、同じ課題に時間を取られる人への一助となれば。

元記事を表示

CakePHPでコンバートができなくなった

タイトル通り、コンバートを掛けようとしたらエラーが出た。

“`
Exception: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known in
[/usr/share/nginx/~~~/hogehoge.php, line 47]
“`

環境は
– VirtualBox
– CentOS7
– CakePHP

##解決
“`
レポジトリ/project/config/app.php

‘Datasources’ => [‘source’ => [‘host’ => **ここをIPアドレスに**]]
“`

今回はこの方法で解決しました。

元記事を表示

php7.0から使える「宇宙船演算子」が名前がかっこいいw

php7.0系の新機能として「宇宙船演算子」なるものがありました。
私はそんなに使う場面ないですが名前がかっこいいのでせっかくなのでメモしておきますw

ちなみに英語版ドキュメントの表記では
「**Spaceship operator**」
でした。

確かに宇宙船演算子ですw

## 宇宙船演算子

二つの式を比較するために使うものです。

“`
echo $a <=> $b;
“`

“$a“が右辺の“$b“より大きい場合は “1“
“$a“と“$b“が等しい場合は “0“
“$a“が“$b“より小さい場合は “-1“
をそれぞれ返します。

下記の動作も公式のサンプル通り同様です。

“`php
// 整数値
var_dump(1 <=> 1); // 0
var_dump(1 <=> 2); // -1
var_dump(2 <=> 1); // 1

// 浮動小数点
var_dump(1.5 <=> 1.5); // 0
var_dump(1.5 <=> 1.6); // -1
var_dump(2.1 <=> 1.5); //

元記事を表示

ComposerでSlim4を導入

#はじめに
普段PHPで開発を行っていますが、しばらく前からSlim3というフレームワークで開発を行うようになりました!
前回はComposerとXamppの導入を行ったので、今回はフレームワークを入れて、PHPが組める環境にしていきます。

##目次
・実行環境
・環境構築
 - Xampp、Composerの用意
・Slim4導入
 - env作成(設定ファイル)
 - DB接続設定
・Xampp実行(WEBサーバー、DBサーバー)
・初期設定
・動作確認

##実行環境
・Windows
・Composer
・Xampp(Apache,Mysql)
・Slim4
ネットにつながるWindowsPC1台で完結します!

##環境構築
今回以下のディレクトリ配下で作業することを想定しています。
C:\demo\slim4
上記のディレクトリを事前に作成し、PowerShellで開いておいてください。
プロジェクト作成後は
C:\demo\slim4\my-app
がルートディレクトリになります。(my-appは自動作成です。)

###Xampp、Composerの用意
前回の記事

元記事を表示

【備忘録】セッションとは、

#背景
リソース型について調べていたら、「curlセッション」という単語が出てきたが、理解できなかったため

#参考資料
[PHP公式マニュアル セッション](https://www.php.net/manual/ja/session.examples.basic.php)

[「Cookie」と「セッション」と「セッションCookie」の違い](https://ips.nekotype.com/2441/)

[セッション Cookie の概念](https://www.ibm.com/support/knowledgecenter/ja/SSPREK_9.0.2/com.ibm.isam.doc/wrp_config/concept/con_sess_cookies_conc.html)

[セッションとは]
(https://www.seohacks.net/basic/terms/session/)

#セッションとは
PHPでの基本的な使用例
>セッションは、シンプルな方法で個々のユーザーのデータを格納する仕組みで、 個々のユーザーに対して一意なセッション ID を用意しま

元記事を表示

会員登録して書き込む掲示板をPHPで作成してみた【初心者】

#制作物

こちらになります。
[普通の掲示板](http://siro-to.work)

この記事は自分の知識確認のために記載しているため読みにくい箇所が多々あるかもしれません。申し訳ありません。

##実装した機能
下記のことを行えるようにしています。

+ 会員登録
+ ログイン
+ スレッド作成
+ 記事投稿
+ ページネーション

##追加した機能
+ マイページの編集

開発環境はXAMMP。ソースコードはGitHubで管理し、サーバーにssh接続をしてGitHubからpullすることでバージョン管理を行いました。サーバーはmixhosutを利用しています。
Git、GitHubどちらも全然使いこなせていないので今後の課題です。

##データベース設計

・membersテーブル

| 名前 | データの型 | 備考 |
|—|—|—|
|id| int【PRIMARY、A_I】 | primary key,auto_increment |
| name | varchar(255) | 名前 |
| us

元記事を表示

PHPのarray_uniqueを使って、3つ以上のDateTimeが同じ日時かどうか比較する

単純な話なんだけど忘れそうなのでメモ

# 結論

DateTimeクラス同士を比較する場合は、Unixタイムスタンプに出力してから比較を行う。
PHP7.0.4以前のバージョンの場合、modify()をした後にgetTimestamp()を実行すると意図せずに日付が変わることがあるらしいので注意。

参考:[DateTime::getTimestamp()すると日付が変わる件]()
参考:[PHP :: Bug #71525 :: Calls to date_modify will mutate timelib_rel_time, causing date_date_set issues](https://bugs.php.net/bug.php?id=71525)

“`php
// 比較したいDateTimeクラスのオブジェクトを配列に格納する
$dates = [
new DateTime(‘2019-01-01’),
new DateTime(‘2019-01-01’),
new DateTime(‘2019-01-01’)
];

// 配列の要素

元記事を表示

LINE Messaging APIの改行について

LINE Messaging APIの改行について

“`”改行前\n 改行後の文字列 ““`

で改行できました。

ポイントとしては、”(ダブルフォーテーション)でくくること。

![LINEキャプチャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/175837/3979d46c-ae08-e133-c7c4-575dd5bdf1ad.png)

元記事を表示

老体エンジニアまだまだ頑張る開発サイト!!

みんな独学ですが当年69歳まだまだ頑張る開発サイトとして今後も息子(初心者)と投稿しては反省して開発を続けてて行きたいと思っています。
あらためて
https://qiita.com/shinsakujazzbass/items/87a90b46c8da29234bbe
をはじめ色々挑戦してゆきますので、興味のあるかたはご覧ください。
今挑戦しているのは、小規模SNSをWordPress等と組み合わせ構想しています。
これは私共のクライアントの団体組織のコミニケーションツールとして利用可能サイトとそれに連動するアプリとしての構想です。
![system_image001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101462/cc69b75d-0587-c4ce-4c5f-f9a75b055eaa.jpeg)
このシステム構築にまつわるサーバー再度、とアプリ関連の投稿を行って行きたいとおもいます。
今テストを行なっているXcodeのiphoneアプリのダイアグラム以下のようなものです。
![スクリー

元記事を表示

クラス・メソッド・インスタンスの名前を統一してしまうと、インスタンス生成時にメソッドが実行されてしまうバグを、異世界転生モノっぽく説明してみた。

### はじめに
クラス構文の動作確認のため、あまりにも適当なテストコードを書いた際に、
とある小さなバグ(?)を発見した。

(くだらない話なので、異世界転生モノ風に語ってみようと思う。)

### プロローグ
ボクはどこにでもいる普通の男子高校生。
ある日、道端の猫がトラックに轢かれそうになっていたので身を挺して助けたのだが、
不運にもトラックを避けきれずボクは死んでしまった。猫は逃げた。

気がつくと目の前には女神様がいて、ボクは「ニホン」という異世界を救うために転生させられた。
ニホンは、「ピーエイチピー」と呼ばれる魔法文明を気付いていた。
ボクは女神様から「ブラインドタッチ」というチートスキルを授かったため、この世界で最強のピーエイチピー使い「ペチパー」と呼ばれる賢者を目指し、修行をはじめた。

** (中略)**

### 最終章 バグ(?)との遭遇
ピーエイチピーには「クラス」と呼ばれる強力な魔法があると聞いて、さっそくボクは修行をはじめた。
命名規則とかめんどくさいし、最初は適当に試してみようっと。

“`PHP:PHP
class Hoge {
private

元記事を表示

laravel Eloquent groupBy カスタムカラム(column)をつかったgroupBy

例として、テーブルは3カラム[id・year_month・price] 年度ごとの金額を保持しているとする。
この時、年度に関係なく、月で金額を計算したい場合、下のようにする。

“`:php
$query = $this->model->newQuery();
$list = $query
->select([‘id’,DB::raw(“date_format(year_month, ‘%m’) AS month, SUM(price) as price”)])
->groupBy( DB::raw(‘month’))
->get();
“`

selectの際に、DB::rawで変更を加えたカラムは、groupByする際もDB::rawを付けないとエラーになる(公式ページより)

[参照]
https://qiita.com/t_mitarai/items/50ddcc9d0be4275eedb9

元記事を表示

初学者のVPSサーバー構築手順書(4)

ゼェ・・・ゼェ・・

次にWebサーバーとして利用できるようにするためのアプリケーションApache (アパッチ)のインストールと、DNSの設定をして行く序でにLAMP全部入れる。

#httpサーバーApacheをインストールする

まずはサーバーにログイン

“`
$ ssh -i ~/.ssh/kaiji tonegawa@tk0-000-00000.vs.sakura.ne.jp
Last login: Tue Oct 22 00:41:48 2019 from kd0000000000.ppp-bb.dion.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

[tonegawa@tk0-000-00000 ~]$

“`

次にrootにスイッチ

“`
[tonegawa@tk0-000-00000 ~]$ su –
パスワード:
最終ログイン: 2019/10/22 (火) 00:56:48 JST日時 pts/0
最後の失敗ログイン: 2019/10/30 (水) 01:14:20 JST日時 p

元記事を表示

OTHERカテゴリの最新記事