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

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

FizzBuzz問題ーPHP初級編ー

##はじめに
FizzBuzz問題、1度は耳にしたことがある方が多いのではないかと思います。
今回はそのFizzBuzz問題を解説していきたいと思います。

##そもそもFizzBuzz問題とは
英語圏で行われている言葉遊びの一種のようですね。
>プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3の倍数では「Fizz」(Bizz Buzzの場合は「Bizz」)、5の倍数では「Buzz」、両者の公倍数(すなわち15の倍数)では「Fizz Buzz」(Bizz Buzzの場合は「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。

引用:[Fizz Buzz – Wikipedia](https://ja.wikipedia.org/wiki/Fizz_Buzz)

このゲームをプログラミングに応用したものが「Fizz Buzz問題」です。
プログラマーの基本的な知識を確認するのに、面接の小テストで用いられることもあります。

##早速FizzBuzz

元記事を表示

PHP入門 – お問い合わせフォームを作ろう (2)

![php.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665011/157ec724-f1c8-4c00-5fd8-5060961f225e.png)

[前回](https://qiita.com/takahashitakuya031126/items/9934a0e9c44f7aa38a54)の続きです。

####セッション変数の利用

お問い合わせフォームに入力した内容を確認画面に渡すためにコードを追加します。

“`PHP:index.php

元記事を表示

高品質なPMMPプラグインを作るコツ

# はじめに
PMMP(Poggit)が制定している、PQRS (Plugin Quality Requirement Standards)と呼ばれるプラグイン品質の要件標準があります。
これは、それを翻訳して一般的なプラグイン向けにまとめて解説しているものです。

※移動や変更を繰り返したのちPoggitのSubmission Rulesとなっていますが、今でも実質的にPMMPプラグインのPQRSと言えます。

注意: この記事では、RFC 2119 や RFC 6919 に則って要件レベルを表しているわけではありません。

### 冗長なAPIバージョン
プラグインは、plugin.ymlに冗長なAPIバージョンを指定してはいけません。
各メジャーバージョンでサポートされている最も古いAPIバージョンのみを指定する必要があります。
例えば、「3.1.0」が既に指定されている場合、「3.2.0」は不要です。

– 悪い例

“`yaml:plugin.yml
api:
– 3.1.0
– 3.2.0
“`

– 良い例

“`yaml:plugin.yml
api:

元記事を表示

先輩に用意してもらったDockerFileを使用してLaravel6の環境を作成した話

# 目的

– 先輩の記事を参考にLaravel6の環境をDockerを用いて作成した話をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

# 前提条件

– 特になし。

# 前提情報

– 職場の大先輩である[@layzy_glp](https://qiita.com/layzy_glp)さんのQiitaの記事[Dockerで始めるLaravel講座 – Laravel編](https://qiita.com/layzy_glp/items/579b295e8cc899aef2c4)の記事の方法を参考

元記事を表示

PHPファイルがブラウザで正しく表示されない

phpファイルをブラウザで表示させようとしたところ、

[![Image from Gyazo](https://i.gyazo.com/2d35d0fc46f201399d1292f48974938d.png)](https://gyazo.com/2d35d0fc46f201399d1292f48974938d)

ソースコードしか表示されなくて地味にハマったので

対処法を自分用に保存。

## apacheを起動

まずPHPはサーバーサイド言語のため
当然ながらWEBサーバーを動かさなければお話なりません。

## ドキュメントルート変更

apacheはデフォルトで**MAMP/htdocs/index.php**ファイルが起動するようになってるでこれを変更します。
[![Image from Gyazo](https://i.gyazo.com/9e39a70fb9f2b5670466fcd1eaba3797.jpg)](https://gyazo.com/9e39a70fb9f2b5670466fcd1eaba3797)

1 :MAMP選択 ➡️ prefectur

元記事を表示

【PHP】正規表現(半角英字・郵便番号・メールアドレス)

プログラミング初学者がアウトプットのため気まぐれ更新。
アドバイス等あればご教示頂きたく、よろしくお願い致します。

今回は、よく使う正規表現をキロクしておきます。

##半角英字
ユーザー名の登録などで使用する。
`{ }`のなかに数字をいれることで、文字数制限もできる。

“`php:validation.php
// 半角英字であるかチェック
$pattern =’/^[a-zA-Z]+$/’;
// 8文字以内の半角英数字であるかチェック
$pattern =’/^[a-zA-Z0-9]{8}+$/’;
“`

##郵便番号

“`php:validation.php
// 郵便番号であるかチェック
$pattern =’/[0-9]{3}-[0-9]{4}/’;
“`

##メールアドレス

“`php:validation.php
// メールアドレスであるかチェック
$pattern =’/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/iD’;
“`

お問い合わせフォ

元記事を表示

PHPでAWS S3 の大きいファイルの読込

## やりたいこと
– amazon s3 から大きめのファイルをダウンロードしたい
– いちどに取得しよとすると大変そうなので少しずつ取得したい。
– PHP で取得を行う

## 接続情報を準備する
“`php
define(‘S3’, [
‘KEY’ => AWSのS3のKEYを設定する,
‘PASS’ => AWSのS3のパスワードを設定する,
‘DIR’ => AWSのS3のディレクトリを設定する(s3://[/]))
]);
“`

## 接続を行う
– `AWS SDK for PHP` を使用して接続する
– `Amazon S3 ストリームラッパー` を使用して接続操作を行う

“`php
require_once ‘aws/vendor/autoload.php’;

// S3 接続を行う
$s3 = S3Client::factory([
‘credentials’ => [
‘key’ => S3[‘KEY’],
‘secret’ => S3[‘PASS’

元記事を表示

Laravel シンボリックリンクが切れた時の復旧方法

Laravel のStorage を使っていて、シンボリックリンクが切れてファイルの読み込みができなくなる時があります。

その時の復旧方法を備忘録的に残します。

## シンボリックリンクの設定

“`
php artisan storage:link
“`

これでシンボリックリンクの設定ができます。

Storage フォルダがroot直下にでき、/public 直下からリンクが張られます。

それでうまくいっていたはずが、色々やるうちに変わったり外れてしまった場合の対処法です。

## シンボリックリンクの確認

ローカルの場合、仮想環境のサーバにログインします。

プロジェクトのフォルダまで移動し、ls -la でシンボリックリンクを確認します。

“`
vagrant@homestead:~/code/project$ cd public
vagrant@homestead:~/code/project/public$ ls -la
total 24
drwxr-xr-x 1 vagrant vagrant 384 Jul 4 02:52 .
drwxr-

元記事を表示

PHP入門 – お問い合わせフォームを作ろう (1)

![php.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665011/08e4c23a-a20a-5c75-e051-7cb47997c04f.png)

PHPを持っていない方は事前にインストールしておいてください。

####フォーム画面の作成

任意のディレクトリにindex.phpを作成します。

“`PHP:index.php




お問合せフォーム

元記事を表示

Laradock でLaravel + SQLServerの環境を用意する

# Laradockの取得

基本は [公式ドキュメント](http://laradock.io/getting-started/) を参照

“`
// 作業用ディレクトリにlaradockをクローンする
git clone https://github.com/Laradock/laradock.git

// envファイルをコピーする
cd laradock
cp env-example .env
“`

本記事は公式ドキュメントの新規作成用のプロジェクト手順に従い、次のディレクトリ構成となる想定です。

“`
作業用フォルダ
├ laradock
└ lara-test(新規プロジェクトフォルダ)
“`

# dockerをビルドする前に行う設定

## .envの修正

### 基本設定

`APP_CODE_PATH_HOST`に作成予定のプロジェクト名を入力する

“`
APP_CODE_PATH_HOST=../lara-test/
“`

### SQL Server用設定

DB名、SA用パスワード、ポート番号を設定する。
パスワードは8文字

元記事を表示

会員制ライブ動画配信サイトの骨組をAWSで作ろう

こんにちは?
今日は、タイトルのことを↓のような方法で実現してみます。

—-

* S3にHLS動画を置く。パブリックアクセスは許可しない。
* CloudFront経由でのみ、その動画を再生できるようにする。
ただしCloudFrontの暗号鍵で署名したCookieが必要とするよう設定する。
* CloudFrontにドメインを割り当てる。
* AWS SDKのCloudFrontクライアントが使えて署名Cookieを操作できる言語(本記事ではPHP)で、動画配信WEBアプリケーションを作る。
* WEBサーバーに、CloudFrontとセカンドレベルドメインまで同じドメインを割り当てる。
またCloudFrontの暗号鍵を持たせる。(これでCloudFrontとWEBサーバーで署名Cookieを共有できる)
* あとは署名Cookie発行をWEBアプリケーションの業務ロジックでコントロールすれば、会員制動画配信が実現可能!(これ以降は本記事では割愛します。)

ついでにCORS対応を施して、
Safari以外のブラウザ(本記事ではChrome)でHLS動画

元記事を表示

新人3ヶ月エンジニアが学んだPHP関数

#新人3ヶ月エンジニアが学んだPHP関数
スクールでRailsを学び、晴れWebエンジニアになった私ですが
使用するフレームワークはLarabel 言語はPHPでした。
プロゲートでPHPを一周やって、あとはLaravelを触り続ける毎日で実務に突入したのですが
PHP関数は「ナンモワカラン」状態で、コードを読むのが大変だったので備忘録的に実務で使用していたPHP関数をまとめて置きたいと思います。

##array_column() 

“`
array_column(配列, ‘カラム名’, ‘カラム名’)
“`
配列から単一のカラムの値を返す
##array_values ()
“`
array_values ( 配列 )
“`
配列から全ての値を取り出し、数値添字をつけた配列を返します。

##array_unique()
“`
array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
“`
配列から重複した値を削除する

##array_merge()
“`
array

元記事を表示

なんで自鯖のフォントファイルをサイトビルダーで使えないんじゃ^~

# 経緯

某Webサイトビルダーでサイトタイトルにフォントを使いたい
  ↓
カスタムコード機能でCSSを記述する

“`css
@font-face {
font-family: “custom-font”;
src: url(“https://my-rental-server.sample/font/tsukaitai.ttf”);
}
h1#kakkoii-title {
font-family: custom-font, sans-selif;
}
“`
  ↓
chrome先生「“`Access to font at ‘https://my-rental-server.sample/font/tsukaitai.ttf’ from origin ‘https://suitbuilder.sample’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.“`」
  ↓
僕「ぴえん」

元記事を表示

【PHP】Mixed Content(混合コンテンツ)が起きた際の対処法

## ■概要
ステージング環境から本番環境にデプロイした際、ページがHTTP表記になっており、
かつデベロッパーツールのコンソールにエラーが出ていた。
確認すると、
`Mixed Content: The page at ‘https://test.com/test/’ was loaded over HTTPS, but requested an insecure url ‘http://test.com/test/’. This content should also be served over HTTPS.`

## ■原因
ステージング環境ではSSL対応をしていないため、
PHPで表示中のサイトURLを取得する方法がHTTPのままになっていた。
それにより、ブラウザからこのページに安全ではないURLが含まれているとアラートが出されていた。

## ■対処法
始めは修正前の書き方をしていたので、プロトコルを変更すれば解決するが、
ステージングと本番環境によって出し分ける方法を取った方がコードとしてもきれいだと思い、
URLの取得方法を変えてみた。

“`php:修正前

元記事を表示

CodeIgniterのルーティング設定

#前提条件
ルートURLにアクセスすると
CodeIgniterのwelcomeページが表示される
(例)http://example.com/

スクリーンショット 2020-07-03 11.33.20.png

#課題
application/config/routes.phpの設定で、

“`php
$route[‘home’]=’home/index’;
“`
というルーティングを設定しても
/index.php/home
にアクセスしなければindexメソッドが実行されない

これを/homeで実行できるようにしたい。

#apacheのmod_rewriteモジュールを使う
mod_rewriteでは、アクセスURLを別のURLに変換してアクセスさせる

つまり、/exampleというアクセ

元記事を表示

CodeIgniterの環境構築

#前提条件
以前書いた、PHP7.4の開発環境をUbuntuに構築する手順です。
これを参考に環境構築していただければと思います。

[PHP開発環境構築](https://qiita.com/ftakahiro190307/items/159cb0e7cbeb20399eda)

#CodeIgniterのインストール
まずはプロジェクトディレクトリに移動し、ubuntuを立ち上げる
次に、立ちあげたサーバーにssh接続

“`shell
$ vagrant up
$ vagrant ssh
“`

公開ディレクトリに移動し、CodeIgniterをインストール

“`shell
#公開ディレクトリの一つ上の階層に移動(デフォルトの公開ディレクトリは/var/www/html)
$ cd /var/www
$ ls
html

#CodeIgniterをインストール
$ wget https://codeload.github.com/bcit-ci/CodeIgniter/zip/3.1.11
$ ls
3.1.11 html

#インストールしたzip形式のcodeig

元記事を表示

【AWS】AWS SDK for PHPを使ってSESでメールを送信する

## はじめに
PHPでSESを使ってメールを送信したいが、ちょっとAWSの認証まわりが面倒くさかったり、
検索しても以前の情報とかがヒットしたりするので書いておきます。
認証まわりは色々やり方がありますが、AWS認証情報用のiniファイルを作成して実行する方法です。

## 送信用のポリシーを作成する
SES送信用のポリシーを作成してください。

“` JSON
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “ses:SendEmail”,
“Resource”: “*”
}
]
}
“`

## SES認証用のユーザーを作成して、iniファイルを作成する
AWSのIAMでSES認証用のユーザーを作成してください。
ポリシーは上で作ったやつ。
作成すると、「Access key ID」、「Secret access key」が表示されるので、それを元に以下のiniファイルを作成してください。

“`aws_crede

元記事を表示

【Laravel】エラーページ のカスタマイズ

# 内容
laravelでは、エラーが発生したときに表示させるページがあらかじめ用意されています
例えば、404 Not Foundや500 Server Errorなどです
しかし、そのページをそのまま利用することは一般的にありません
そこでエラーページのカスタマイズを説明したいと思います
内容は少ないですが、備忘録として記録しておきます

# 方法
resources/views/errors/以下にビューを配置すればOKです
ただし、ファイル名はエラーコードと同じにしなければなりません
例えば、404.blade.phpや500.blade.phpのようにです

手作業でファイルを作っていってもいいですが、あらかじめ用意されているエラーページがわからなかったり、ページもれがあるといけないので、以下のコマンドを実行することをおすすめします

“`zsh
php artisan vendor:publish –tag=laravel-errors
“`

これによって、resources/views/errors/以下に用意されているビューが生成されます(厳密にはコピーされます

元記事を表示

【Laravel × Redis】No connections available in the pool…の原因と対処法

# はじめに
Laravelにて開発中、以下のようなエラーが発生したため、その原因と対処法を簡単に記します。

“`php:laravel.log
No connections available in the pool {“exception”:”[object] (Predis\\ClientException(code: 0): No connections available in the pool at /var/www/application/vendor/predis/predis/src/Connection/Aggregate/RedisCluster.php:337)…
“`

エラーメッセージより
>Redisの接続に異常がある

と見当がつく。

# 原因
Redisへの接続情報に誤りがあった。
具体的には、Redisのホスト名が誤っていた。
根本原因は、AWS Systems Managerのパラメータストアで管理していた、Redisのホスト名に関する変数の値が古いままとなっていた。

# 対処法
1. Laravelの.envを確認。
2. Redi

元記事を表示

laravel6のIgnition問題

# 概要
システム保守の関係上、[JBNDB](https://jvndb.jvn.jp/)のRSSを常にチェックしているが、先日見た事ないような深刻度の脆弱性が出てきた。
・[Laravel 用の Ignition page における脆弱性](https://jvndb.jvn.jp/ja/contents/2020/JVNDB-2020-006168.html)
スクリーンショット 2020-07-03 10.13.04.png
きゅ、、9.8!!!??? ( MAX10 )
これはヤバいという事で対応したが、すんなりいかなかった話。
# Ignitionとは
[GitHub](https://github.com/facade/ignition)
laravel6から採用されたComposerパッケージのエラ

元記事を表示

OTHERカテゴリの最新記事