PHP関連のことを調べてみた2021年01月25日

PHP関連のことを調べてみた2021年01月25日
目次

setup IIS + PHP + Oracle

#Outline
今回、windows server上でOracleに接続するWEBアプリを作る機会がありました。
Oracleに接続するにあたり、多少設定などに苦労したことがあるため、自分の構築メモふくめて、手順を残しておく

# Environment

| Item | Version | Memo |
|:———–|————:|:————:|
| OS | Windows Server 2019 Standard| |
| DB | Oracle 12.1.0.2.0| |
| PHP | 7.4.14 (32bit) | |
| Instant Client |19.8.0.0.0 | |

# Instant Client

### Download

ここから、Basicパッケージをdownloadする

https://www.oracle.com/jp/topics/technologies/download-instant

元記事を表示

共同開発講座を受講中にコツコツ書いた「詰まったメモ」をジャンル別に全て公開します【データベース(migration/seeding)編】

#はじめに
タイトルの通り、共同開発講座を受講中に起きたトラブルや詰まりポイントをまとめたメモ(約50記事)をジャンル別に全て公開します。
ジャンルは以下の通りなので、気になるものがあればぜひご覧ください。
###【ジャンル一覧】
・GitHub関連
・関連
・php関連
・データベース(migration/seeding)関連
・環境関連
・総まとめ集

下記の点を、ご了承ください。
ジャンルで統一しているため、内容に関しては統一性はありません。
なるべく有用性の高いメモの使用を心がけておりますが、あくまで初学者向けの内容となっております。
自分用のメモを転用しておりますので、表現が稚拙な部分があるかと思います。

#・Laravelのカラム作成で使えるデータ型

– increments(‘id’) … 「符号なしINT」を使用した自動増分ID(主キー)
– binary(‘カラム名’) … バイナリデータカラム
– boolean(‘カラム名’) … 真偽値カラム
– char(‘カラム名’, 長さ) … 長さを指定する文字列カラム
– date(‘カラム名’)

元記事を表示

【初心者】PHPエラー箇所の特定方法(MAMP)

##①ターミナルでMAMP内のログファイルに移動

“`
ApplenoMacBook-Air:~ ユーザー名$ cd/Applications/MAMP/logs
“`
logsの中の、php_error.logファイルにてエラーが吐き出されている。

##②tailコマンドを実行(-fは、ファイルが更新されても常に追い続けてくれる)

“`
ApplenoMacBook-Air:~ ユーザー名$ $ tail -f php_error.log
“`

##③場所の特定が完了

“`
ApplenoMacBook-Air:~ ユーザー名$ tail -f php_error.log
[24-Jan-2021 21:46:13 Asia/Tokyo] PHP Notice: Undefined variable: statusee in /Applications/MAMP/htdocs/ディレクトリ/application/core/View.php on line 63
[24-Jan-2021 21:46:13 Asia/Tokyo] PHP Notice: U

元記事を表示

共同開発講座を受講中にコツコツ書いた「詰まったメモ」をジャンル別に全て公開します【Laravel編】

#はじめに
タイトルの通り、共同開発講座を受講中に起きたトラブルや詰まりポイントをまとめたメモ(約50記事)をジャンル別に全て公開します。
ジャンルは以下の通りなので、気になるものがあればぜひご覧ください。
###【ジャンル一覧】
・GitHub関連
・関連
・php関連
・データベース(migration/seeding)関連
・環境関連
・総まとめ集

下記の点を、ご了承ください。
ジャンルで統一しているため、内容に関しては統一性はありません。
なるべく有用性の高いメモの使用を心がけておりますが、あくまで初学者向けの内容となっております。
自分用のメモを転用しておりますので、表現が稚拙な部分があるかと思います。

#・MVCの考え方(言葉で説明)
**ユーザ登録機能を題材にMVCの実際の動きを確認します**

ルーティング(Web.php)の

“`
Route::get(‘signup’, ‘Auth\RegisterController@showRegistrationForm’)->name(‘signup’);
“`

この意味は
signupと検索されればRegis

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【6問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

Dockerコンテナ間でのFTPアップロードするためのdocker-compose.ymlの書き方

PHP+ApacheからFTPサーバーへデータをアップロードするアプリケーションを開発するために、まずはDockerで開発環境を作ることになりました。
その際に、コンテナ(Apache + php)とコンテナ(Pure-FTPd)の間の通信でハマったので、記事にまとめます。

## バージョン情報
* PHP 7.4
* Apache 2.4
* Pure-FTPd v1.0.47

## 結論
最終的な`docker-compose.yml`とPHPのプログラムの記述はこんな感じ。

### docker-compose.yml
“`docker-compose.yml
version: ‘3.7’
services:
app:
build: .
ports:
– 443:443
volumes:
– .:/var/www/html
ftp-server:
image: stilliard/pure-ftpd:latest
ports:
– “21:21”
– “30000-30009:

元記事を表示

【PHP】メッセージ通知数表示

学習内容を備忘録としてまとめます。
メッセージ通知数表示機能を実装しましたので、作成方法を記載します。
![message_tsuuchisuu.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/316dc9d1-1526-8707-4dfa-f3e8944834f7.gif)
※通知数の表示は赤枠で囲っています

メッセージ機能については、下の記事で説明しているので割愛します。
>[【PHP】メッセージ機能実装](https://qiita.com/ryouya3948/items/3d471b24b9ff62c3ad0d)

#実装方法
実装方法について記載していきます。

##テーブル構成
`messatge_relationテーブル`にカラムを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/9f8f00a7-e757-9f7d-3361-24b965acc668

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【5問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

Docker上のLaravelにJetstreamをインストールする。

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4
https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4
上記の記事を参考に構築したLaravel8に、Jetstreamをインストールします。

## ComposerでJetstreamをインストールする
まず、Laravelをインストールしたコンテナに入ります。

“`
$ docker-compose exec [コンテナ名] [コマンド名]
“`
次にcomposerコマンドを実行します。

“`
$ composer require laravel/jetstream
“`

## jetstream:installを実行
フロントエンドスタックとして、LivewireかInertiaを指定します。
Livewireはテンプレート言語にLaravelのBladeを利用します。
一方、InertiaはVue.jsを利用します。
どちらの場合も、–teamsをつけることでチームサポートを有効にできます。

“`

元記事を表示

Docker + Laravel + Vue の環境構築 – Docker編

# はじめに
– `Docker`が`Windows10 Home`にも対応したということでDockerでの環境構築を始めてみました。
– `Docker`と`Vue`は初めて触ります。`Laravel`のみ少し経験あり。
– Xserverにデプロイするつもりで構築。
– ドキュメントルートはプロジェクト直下の `public_html`
– 本来はWebサーバーは`Apache`だけど、慣れたいのでnginx使ってます。

# 環境
– Windows 10 Home(20H2)

# Dockerのインストールについて
– **インストール**
– [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop)
– インストールの詳細については割愛します。
– **発生したトラブル**
– `Win10`にすんなりインストールして使えるとはいかず、バージョンアップをしました。
– Windowsアップデートがまだの場合、下記公式からダウンロード

元記事を表示

【PHP】初中級者が解くべき過去問精選 100 問を解いてみた【4問目/100】

アルゴリズムのアウトプット

ということで、
[レッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】](https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7%B4%9A%E8%80%85%E3%81%8C%E8%A7%A3%E3%81%8F%E3%81%B9%E3%81%8D%E9%81%8E%E5%8E%BB%E5%95%8F%E7%B2%BE%E9%81%B8-100-%E5%95%8F)@e869120さん

>AtCoder で水色コーダー、つまりレーティング 1200 を少ない問題数で達成するために、茶色コーダー・緑コーダーにとって適切な教育的良問を 100 問集めました。

こちらの記事の初中級者が解くべき過去問精選 100 問
をPHPで解いていきます。

“`php

元記事を表示

【PHP】住所を都道府県/市区町村/それ以降に分ける

# 参考

この記事を作るにあたり、以下のサイトを大いに参考にしました。

[なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ](https://qiita.com/zakuroishikuro/items/066421bce820e3c73ce9)
[PHP: preg_match – Manual](https://www.php.net/manual/en/function.preg-match.php)
[[PHP] preg_match の正規表現の中で日本語(マルチバイト文字)を使う « Codaholic](https://codaholic.org/?p=1671)

# コード

“`PHP:separate_address.php

元記事を表示

phpMyAdmin 4.6.6 のWarning対処

同じような環境を何度も構築しては、phpMyAdminから警告がでるので、いい加減まとめる。
最新をソースからinstallすればいいんだけど、aptに慣れた体にはマジ無理・・。

# 環境

– Ubuntu 18.04.5 LTS (Bionic Beaver)
– Apache 2.4.29
– MySQL 5.7.32-0ubuntu0.18.04.1 – (Ubuntu)
– PHP 7.2.24-0ubuntu0.18.04.7
– phpMyAdmin 4.6.6deb5ubuntu0.5

インポート/エクスポート回り2箇所でWarningがでるので対処。

# Warning in ./libraries/plugin_interface.lib.php#551

“`php

Warning in ./libraries/plugin_interface.lib.php#551
count(): Parameter must be an array or an object that implements Countable
“`

php7

元記事を表示

谷藤賢一『いきなりはじめるPHPワクワク・ドキドキの入門教室』でPHPを勉強するのをやめた話

チャプター3まで終え、チャプター4『データベース』に進もうとしたら、mampの設定で挫折した。

以前【PHP】超優良入門書『いきなりはじめるPHP』をMAMPで完走するために知っておくべき5つのこと【Mac】

に「xamppではなくmampでも勉強できる」と記載したが、調べてみるとmampはmacbook向けのデータベースでwindowsには向かないと判明した。

【PHP初心者向け】MAMPでMySQLの文字コードを設定する方法(文字化け対策)【Mac】を参考に文字化け対策を行おうにも、コマンドプロンプトでエラーが出て進めない。対策方法はあるらしいが、初学者の私にはどうすればいいか見当もつかない。

というわけで、この本でphpの学習を続けるのは断念した。

元記事を表示

DockerでPHP環境を作る(mac)

## はじめに
勤め先でもPHPを使っており自宅でPHPを勉強するために、ローカルでPHP開発環境を整えることにしました。
MAMP(マンプ)でも良いかなと思いましたが、せっかくなのでDockerで作ってみます。
(開発中に色々詰まってしまったところがあるので、備忘録がわりのメモです。)

## 手順
1. Dockerによる環境構築
2. ファイル・ディレクトリの準備
3. 各ファイルの作成
4. コンテナを起動
5. サイトにアクセス

### 1. Dockerによる環境構築
Dockerを使うには、「Docker for Mac」のインストールが必要です。
Qitaに素敵な記事がたくさんあるので、ここでの説明は省略します。

今回はDockerで以下のコンテナを使います。

– nginx
– PHP
– MySQL
– PHPMyAdmin

使用するコンテナが複数あるので、今回は「Docker Compose」を使って環境を作っていきます。

### 2. ディレクトリ・ファイルの準備
Dockerを起動する場所を作成しましょう。
まずはフォルダを1つ用意し、次のようなファ

元記事を表示

エンジニア未経験がWordPressでWEBアプリを制作する際につまずいたこと

# まず初めにどのようなWEBアプリを作ったのか

「[AboutMyself](https://www.aboutmyself.net/)」という、プロフィール専門SNSを製作しました。
※内容については、[こちらの記事](https://qiita.com/sakurasoudai/items/c6c7f55a74532e8fb75e “こちら”)を参照。

# 「[AboutMyself](https://www.aboutmyself.net/)」を製作する上でつまずいたこと

1. **SNSを製作する上でのプラグインの選択について困った**
→日本語の説明ブログなどもかなり投稿されていますので、これに関しては「[BuddyPress](https://ja.wordpress.org/plugins/buddypress/)」一択で大丈夫だと思います。

2. **ログイン・登録画面で自分のサイトのUIではなく、WordPressのログイン画面に遷移してしまう。**
→これもプラグインがおすすめです。「[Theme My Login](https://ja.word

元記事を表示

【Laravel】テーブル名が長い時に、Laravel7から導入された外部キー制約をつけるマイグレーションエイリアスを使う方法

久しぶりのQiitaへの投稿です。

未経験からエンジニアに転職をして、2年目に突入したバックエンドエンジニアです。
DBに外部キー制約を追加をしようと思い、Laravel7から使えるエイリアスでmigrationファイルを作成していました。
ただ、テーブル名が長い時にハマってしまい、できる人には当たり前すぎる内容かもしれませんが、振り返りの意味も込めて投稿します。

# 開発環境

– 言語:PHP7.4.8
– フレームワーク:Laravel7.28.3
– DB:MySQL8.0.22

# テーブル名が短い時

## 目標のテーブル構造
公式ガイドでもよく使われるような下記のようなテーブルを作り、postsテーブルのuser_idに外部キー制約をかけることを目指します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451174/aa911825-bbc7-d543-a9f9-c1dd7daa96a6.png)

## Laravel7より前の時の記法
Laravel7より前の

元記事を表示

PHP ログイン認証の作成手順⑤ 〜ログイン機能作成②とセッションハイジャック〜

今回は
・emailと一致するユーザ検索
・passwordが一致するか検証
・ユーザ情報をセッションに格納してログイン
を実装する

###パスワード照会の方法
ユーザ入力とDBの値を照会
しかし、パスワードはハッシュ化されている→照会できる関数がある
`password_verify(パス、ハッシュ)`
パスワードがハッシュにマッチするかを判定する
マッチしたらtrue、しなかったらfalseを返す

###セッションハイジャック対策
セッションIDを盗まれて、なりすましをされること
対策:セッションIDを再作成する

#手順
##ログインロジック作成
前回までに作成したUserLogicクラスの中にログイン専用のメソッドを作成していく。
`login`メソッドとする。
top.phpがログインフォーム後のページだから、ここでログインの処理を記述する。

“`php:top.php

元記事を表示

PHP ログイン認証の作成手順④ 〜ログイン機能作成①とセッションとキャッシュ〜

#ログイン機能の作成の流れ
①emailとpasswordを受け取る
②emailと一致するユーザ検索
③passwordが一致するか検証
④ユーザ情報をセッションに格納してログイン

#sessionとは
開始から終了までの期間のこと。
1ユーザのログインからログアウトまでの行動は1セッション。
1セッションはセッションIDで管理する。

通信(HTTP)はユーザを識別することができない。
そのため、識別するためにセッションが必要になる。
セッションIDを管理するのはCookie。

CookieはセッションIDをブラウザに保存する。

ユーザがログインすると、サーバ側からセッションIDが生成されてブラウザに送られ、Cookieに保存する。
そして、ログイン中は常にセッションIDを送って、サーバ側でユーザを識別してもらう。

##sessionの使い方
###関数
`session_start()`
→Cookie(ブラウザ)にセッションIDを入れる
→セッションファイルが生成される
→セッションファイルに自由に値を保存可能(現場ではセッションファイルを管理する用のデータベースを作る

元記事を表示

エンジニア未経験がWordPressを使ってWEBアプリを作ってみた

# 今回製作したWEBアプリについて

今回作成したWEBアプリは「[AboutMyself](https://www.aboutmyself.net “AboutMyself”)」。プロフィールを質問形式で記載していくSNSのようなものです。15年程前に流行った「前略プロフ」をイメージしていただければ良いかと思います。![IMG_7162.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/402394/45134b81-7d71-3a65-51b7-a4b032d68773.png)

#1. 開発経緯

インターンのテレワークをするなかで、新しく入ってきた人のこと(趣味や経歴)についてわからずなかなかコミュニケーションが取りづらいと思った。また、気難しいと思っていた上司の趣味がわかった途端、急に親近感が沸いた。これらのことから、ある程度事前に相手のことをわかっていればコミュニケーションが円滑になるのではないかと考え、「AboutMyself」を作ることになった。

#2. 「[AboutMyself]

元記事を表示

OTHERカテゴリの最新記事