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

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

障害・エラー発生時に原因を特定するための勘所まとめ(WEBエンジニア向け)

# 目次
– [こんな人に読んで欲しい](#こんな人に読んで欲しい)
– [何について話す?](#何について話す?)
– [調査能力を身に付けるための技術を身に付ける](#調査能力を身に付けるための技術を身に付ける)
– [障害発生時フェーズ](#障害発生時フェーズ)
– [1.緊急レベルを判断する](#1緊急レベルを判断する)
– [2.上司・関係者に報告する](#2上司・関係者に報告する)
– [ログ調査フェーズ](#ログ調査フェーズ)
– [1.障害が発生しているサーバーを特定する](#1障害が発生しているサーバーを特定する知っている場合は省略可)
– [2.ログ出力の場所を特定する](#2ログ出力の場所を特定する)
– [3.ログファイルから対象エラーログを特定する](#3ログファイルから対象エラーログを特定する)
– [プログラム調査フェーズ](#プログラム調査フェーズ)
– [1.調査はサーバ上で行わない](#1調査はサーバ上で行わない)
– [2.各プログラム言語のデバッグ方法を理解する](#2各プログラム言語のデバッグ方法を理解する)
– [調査結果報告フ

元記事を表示

aタグで作ったボタンでPOST送信する

##はじめに
PHPのフォームで値を送信する際、aタグで作ったボタンでも送信する方法です。
自分が実装する際に困った箇所もまとめます。

###なぜaタグで送信する必要があったか
・inputタグ(type=”submit”)ではデザイン通りに実装できなかったため。
・formの外のボタンはaタグで実装されており、サイト・システム全体でボタンのスタイルや挙動を統一したかったため。

##ソースコード
**名前**と**メールアドレス**を送信するフォームを例に。
index.phpでフォームの値を送信してフォーム上に値を表示させてみます。

“`form.php

元記事を表示

Laravelで認可(Gate)

# 認可
簡単に言うと
認証はアクセスしてきているユーザーが誰なのかを認識するもの
認可はアクセスしてきたユーザーに操作を許可するかどうかを判定するもの
です

# Gateを使った認可
簡単に言うと
真偽値を返す関数(Gate)を作っておき、それを簡単に呼び出せるようにしておくようなものです

# 前提条件
[eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)](https://qiita.com/toontoon/items/76fa7f8845b20776077c)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています

[Laravelの認証(web画面)](https://qiita.com/toontoon/items/34c871da8660e7d7c075)
本記事は上記記事でLaravelの認証が実装されている前提で書かれています

# 認可に使うカラム追加
(1) マイグレーション作成
コマンドラインで
`cd samp

元記事を表示

問題集への解答

#ID:2 フィボナッチ数列の生成

“`php5
2 ; $i–) {
if ($num%$i==0) {
$count++;
}
if ($count==2) {
return false;

元記事を表示

複数の型を動的に変更しつつ静的型チェックしたい

`array`の型が全て保存される版のようなものが欲しい。
欲を言わなければ、ListかTupleでもいい。

ということで作ってみる。

“`php
class Unit
{
/** @var Unit */
public static $unit;
}
Unit::$unit = new Unit;

/**
* @template V
* @template N
*/
class TypedList
{
/** @var V */
private $value;
/** @var N */
private $next;

/**
* @param V $value
* @param N $next
*/
private function __construct($value, $next)
{
$this->value = $value;
$this->next = $next;
}

/**
* @templat

元記事を表示

LaradockでWordPressを動かしてMailHogを使う

Laradockはオールインワンで便利なので、PHP絡みでちょっとした開発のときは、マルチプロジェクト環境のLaradockから必要なコンテナを起ち上げて、ちょこちょこっと作っちゃうとかできて重宝しています。
そんなわけで非常にマニアックかと思いますがLaradockにて

– nginx
– MySQL
– MailHog

を起ち上げてWordPressを動かしたときの、MailHog設定について、ちょっと躓いたのでメモ。

# mhsendmailのインストール

WordPressはメール送信に、php.iniに設定してあるsendmailを使うみたいで、Laradockのデフォルトの設定だとメール送信をMailHogがキャッチしてくれません。(エラーになる)

sendimailをMailHogにしてくれる `mailhog/mhsendmail` をインストールします。

“`Dockerfile:laradock/php-fpm/Dockerfile

###########################################################

元記事を表示

ローカルのDockerにLAMP環境を構築

#はじめに
ローカルのDockerにLAMP環境を構築する方法です。
以下の環境を構築します。
Windows10Proに構築します。

+ CentOS7.4.1708
+ PHP7.2
+ Laravel5.5
+ Apache
+ MySQL5.7
+ phpMyAdmin]

※予め出来ているDockerファイルを利用するため、Dockerファイルの作成方法などを記載するわけではありません。

#Docker Desktopのインストール
以下のサイトからDocker Desktopをインストールします。
https://www.docker.com/get-started

#Dockerファイル群の配置
以下から、ApaLara.zipをDLし、任意の場所に配置します。
https://github.com/shinjinakatamari/LAMP

#配置フォルダの追加
DockerDeskTopを開き、のsetting>Resources>FILE SHARINGで設定フォルダを追加し、Apply&Restartをクリックする

#コマンドの実施
コマンドプロンプトを

元記事を表示

ぐるなびAPIと占いAPIに触れてみた。

今久しぶりにPHPを触っていて、APIが動いて感動したので書き留めます。
初歩的な内容です。。

**ぐるなびPHP**

拾い物のPHPをちょっと修正して
ぐるなびAPIコードは登録すれば無料で使えます。

xamppでapacheを起動させて、
仮のサーバーフォルダ?の中に入れて、ブラウザでlocalhost/php/guru.phpに移動すると動きます。

“`php:guru.php

// 定義
define(“GURUNAVIAPI_ACCESS_KEY”, “APIコードを入れてください。”);
define(“INTERNAL_ENC”, “UTF-8”);
define(“ARR_CONTEXT_OPTIONS”, null);

// START
function gurunavi_search_restlist_v3($hit_per_page=30, $offset_page=1, $freeword) {
$ret = FALSE;

$search_url = “https://api.gnavi.co.jp/RestSearchA

元記事を表示

【Laravel】Authを使ったログインとユーザー登録

#Authでログイン機能とユーザー登録機能を用意する
composerでlaravel/uiをインストールし、artisanコマンドでスカフォールドを生成する。

“`terminal
composer require laravel/ui

php artisan ui bootstrap –auth
“`
※uiではbootstrapの他に、vueやreactを用いることもできる。
[uiの生成](https://readouble.com/laravel/7.x/ja/frontend.html)
これでログイン機能とユーザー登録機能は用意できたが、このままではデザインがないのでnpmをインストールし、run devでコンパイルしてデザインを付ける。

“`terminal
npm install
npm run dev
“`
##データベースの作成
ユーザー情報を保存するためにデータベースを作成する。
今回はmysqlを使う。
mampのスタート画面のtoolsからphpmyadminを開く。
新規作成からデータベース名を埋めてデータベースを作成する。
larave

元記事を表示

Heroku&Macで個人Webサービスをさくっと開発&リリースするまで

#はじめに
最近では、HerokuやGithubが無料で使えるので、ある程度の知識があれば無料でWebサービス開発とリリースまで、企業と同様の手法でできてしまう。
ローカル開発環境 ⇔ Githubでソース管理 ⇔ Herokuでホスティング

# Macローカルでの開発環境構築
localhostで表示確認できるよう、サーバを動かす

“`zsh:Macローカル
$ sudo apachectl start
“`
http://localhost/
にアクセス。
Screen Shot 2020-07-25 at 9.20.28.png

ファイルの実態は「/Library/WebServer/Documents/」

# Macローカルでファイル作成
トップページの素のPHPファイルを作ってみる。

“`P

元記事を表示

【PHP】composer require時にPHP Fatal error: Allowed memory size of XXX bytes exhaustedが表示されたら

# 環境
– PHP 7.4.5
– Composer 1.10.5

# 事象
composer requireしようとしたら、メモリ確保できやんでと怒られた。
https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors を見ろと言われているので、それに従う。

“`bash

$ composer require –dev nunomaduro/larastan
Using version ^0.6.1 for nunomaduro/larastan
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4

元記事を表示

Woocommerceにプロダクトをphpから複数画像付きで追加する

#はじめに

– wordpressフォルダに配置されることを想定しています。位置が変わる場合はrequire_onceのパスを変更してください。
– POSTでタイトルはtitle,説明はExplanation,画像(複数)はuploadで 受け取ります。使用方法により書き換えてください。
– SKUや価格等は今回使用しなかったため含まれていません。
– 元となったものでは動作確認をしていますが、編集後動作確認をしていません。
– 投稿用に編集しているので、不自然な箇所があるかもしれません。

#全体
受け取る側

“`php

元記事を表示

【画像あり】「どちらか一方は入力必須」のvalidationをCakePHP3.8で行う

# 今回のお題

CakePHP3.8を使って実装を進めた際に起きました。
調べてみても意外にヒットしなかったので、自分なりの対処方法を残しておきます。

## 環境
PHP: 5.6.40
CakePHP: 3.8
OS: CentOS7.2
DB: MySQL5.7.21

今さらPHP5.6かよ、というのは置いておき。。

## 画面イメージ

よくあるこのような画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/130324/4ddbe92d-6d59-c057-6819-fb4c670b50e2.png)

今回は身長か体重のどちらかは入力必須(両方入力されていてもOK)というお話です。

## CakePHP3実装

### model

Usersモデルに以下のカラムがある、という前提で進めます。
身長: height
体重: weight

“`src/Model/Table/UsersTab

元記事を表示

aibo Events API を使って aibo に音声コマンドを実行してもらう

先週、先々週と仮面ライダーゼロワンに
天津垓の相棒である AI 犬型ロボットさうざー役として出演していた aibo。

元記事を表示

Xampp(Apache+PHP)にてLocalネットワークからGmailが送信できるまで

#背景
 完全に備忘録です。私のバイト先で、「ローカルのみで動いているサイトからGmailを送信したい」とお願いされたので、いろいろ調べたことをメモしておきます。

注意)
 私はサーバーとかセキュリティ初心者です。もしかしたらとても危険な操作をしているかもしれません。もしこの記事を参考にされる方いらっしゃいましたら、自己責任でお願いいたします。

#環境
 動作環境は以下の通りです。この記事ではxamppのインストールから書いていこうと思います。また、Gmailアカウントについては携帯電話番号登録がされている場合(二重認証)の場合と、携帯番号無しでGmailアカウントを作った2通りの説明を残します。
(Gmailアカウントは持っている前提で話を進めます)

* Windows10
* Xampp(Apache + PHP + Mercury Mail Server + Fake Sendmail)
* Gmail

#xamppインストール編
 まず、以下のURLからxamppインストーラをダウンロードしてください。

* https://www.apachefriends.org/

元記事を表示

DockerでRedisコンテナを立ち上げLaravelで読み書きする

# はじめに
DockerでRedisコンテナを立ち上げLaravelから読み書きしてみましたので、
Redisコンテナを立ち上げるまでの最小限の構成を紹介します。

## やりたいこと
– DockerでRedisコンテナを立ち上げたい
– Redisのデータを永続化したい
– LaravelからRedisのデータを読み書きしたい

## この記事で説明しないこと
– Redis以外のDocker構成
– Laravelのインストール手順

## ディレクトリ構成
“`
.
├── data
│ └── redis
│ └── appendonly.aof(コンテナ起動時に作成されます)
├── docker-file
│ ├── nginx
│ │ └── default.conf
│ └── php
│ ├── Dockerfile
│ └── php.ini
├── volumes
│ └── www
└── docker-compose.yml
“`
# 各ファイルの内容
## docker-compose.y

元記事を表示

PHP7.2 × DockerでgRPCクライアントを使うための環境構築

Goでクライアントを作るときには、`brew`や`go get`でパッケージをいくつか入れるだけで済むのですが、PHPの方ではいくつかハマりどころがあったのでまとめました。

# 前提
* protoコマンドがインストールされている
* 使用するRPC方式はUnaryRPCである
* コード生成はローカル環境で行う

# 扱うprotoファイル
下記のprotoに少し変更をかけたものを扱います。
https://grpc.io/docs/languages/php/quickstart/

“`hello.proto
package hello;

service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}

message HelloRequest {
string name = 1;
}

message HelloReply {
string message = 1;
}
“`

# コード生成
下記ページを参考にしました。
https://grpc.io/docs/languag

元記事を表示

【Laravel】シーディング

# 内容
シーディングについてメモしておきます。

# factoryファイルの作成

UserFactoryはデフォルトで作成されています。
ここではuser_idを外部キーにもつPostモデルのfactoryファイルを作成してみます。

“`zsh
% php artisan make:factory PostFactory –model=Post
“`

–modelオプションでモデルを指定しています。
ファイルの中身は、例えば以下のようにします。

“`php:database/factories/PostFactory.php
use Illuminate\Support\Str;

$factory->define(Post::class, function (Faker $faker) {
return [
‘title’ => $faker->title(),
‘comment’ => Str::random(10),
];
});
“`

指定していないcreated_atやupdated_atなどは自動生成

元記事を表示

DockerでPHP7.4のLaravel開発環境を作成

PHP7.4のLaravel開発環境を、Docker-Composeで構築して、Laravelの新規プロジェクトを作成して起動してみるところまで確認してみます。
データベースには「MariaDB」を使います。

## 環境

この記事を書くにあたって使用した環境です。どれも、2020年7月時点の最新バージョンを使用しているハズ。

### Docker

| Name | Version |
| ————– | ——- |
| docker | 19.03.1 |
| docker-compose | 1.24.1 |

### Web

今回は、Webサーバーに「Apache」を使用します。

| Name | Version |
| ——- | ——- |
| PHP | 7.4 |
| Apache | 2.4.38 |
| Laravel | 7.21.0 |

### DB

データベースは「MariaDB」です。データベース管理ツールの「Adminer」も入れておきま

元記事を表示

GulpのBrowserSyncとPHPのビルトインサーバを組み合わせる

## 要約

コーディングでBrowserSyncを使うときにPHPも使いたいけど、
さくっとビルトインサーバで実行するのに詰まったのでメモ。
要はBrowserSyncのproxyを使うのと、ビルトインサーバを0.0.0.0で実行したらいけた。

### ビルトインサーバの起動

localhost:8000でもいいかと思ったけどダメだった。
のでlocalhostじゃなくても参照できるよう起動。

“`bash
# 先にビルトインサーバ起動。localhostだとproxyが効かない?(効かなかった)
php -S 0.0.0.0:8000
“`

BrowserSyncの方はproxyでビルトインサーバを参照するだけ。

“`gulpfile.js
// これでlocalhost:3000のリクエストはlocalhost:8000を参照する
browserSync: {
proxy: ‘localhost:8000’
}
“`

その他、htmlファイルでPHPを実行したいのもあったので、細かく調整。
ApacheでいうところのAddTypeに相当する実行をするために

元記事を表示

OTHERカテゴリの最新記事