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

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

【Laravel,MySQL】

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はLaravelからDBへの接続エラーの原因と解決策についてまとめます。
なお、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88

元記事を表示

PHP8.1でPECLが使えなかったので修正した話

PHP8.1にバージョンアップしpeclでインストールを行おうとした際に発生した問題です.解決方法まで書いていきます.

### 基本情報
“`
$ cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04.3 LTS (Focal Fossa)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 20.04.3 LTS”
VERSION_ID=”20.04″

$ php -v
PHP 8.1.1 (cli) (built: Dec 31 2021 07:26:20) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
“`

## 問題
MongoDBとの接続のためPHPのドライバーを入れる際に発生しました

“`bash
$ sudo pecl

元記事を表示

laravelシンボリックリンクしても画像が表示されない

# 画像アップロードの仕方
laravelでは画像をアップロードして保存する際に

“`php
public function store(Request $request) {
$filename = $req->imgpath->getClientOriginalName();
$img = $req->imgpath->storeAs(”, $filename);
}
“`

のようにして保存できるのですが、その時のフォルダは

“`
storage/app
“`
になっているようです。僕が保存したときは上記のフォルダに保存されました。

#アップロードした画像を表示
表示はとても簡単です。

“`php

“`

これで普通なら表示できるのですが、何も表示されないと思います。
理由は簡単`asset関数`はpublicフォルダを参照するからそもそもフォルダ違うよねということです。

ではどうするのか。
シンボリックリンクをしてあげましょう。

#シンボリックリン

元記事を表示

【PHP】htmlspecialchars()の使い方

#背景
会員登録画面を作成中に出てきたので、備忘録かねて作成しました。
macOS : Monterey
PHP : 8.1.1

#エスケープ処理について
htmlspecialchars()はエスケープ処理を行う関数であるが、まずエスケープ処理ってなんだってなったので調べてみた。
マークアップ言語のHTMLに限らず、プログラミング言語ではその言語にとって特別な意味を持つ記号があり、それをエスケープシーケンス(エスケープ文字、特殊文字)と言う。例えばHTMLでは < とか > とかが該当する。
記事に文章を入力するときなどに < や > を使おうとすると、通常これらの文字は、HTMLを動かす為に必要な記号だと判断され上手く表示されない。
そのため、入力フォームなどで < や > を文字として変換するための処理が用意されており、その処理のことをエスケープ処理という。

#htmlspecialchars()の使い方
“`php:htmlspecialchars()の引数
htmlspecialchars(変換したい文字列, フラグ(変換するルールみたいなもの), エンコード, 既存

元記事を表示

mySqlではtimestampにNullを入れられない

初投稿になります。
Udemyの[こちら](https://www.udemy.com/share/104N8g3@lKjwibOOW8wJEfVdhyKoDtP2jeghxhDe3AepXnkal6YJBh-ll792a-BWTMK5DnGsqQ==/)の講座で一通り勉強したので、仕事であったら便利そうなWebアプリを作ってみようと思っています。
プログラミングの勉強を始めたきっかけはいつか別記事で書きたいと思っています。
# つくろうとしている物
弊社には顧客管理や見積請求作成ソフトがありデータがリンクするようになっているのですが、リース器具管理だけ独立してexcelデータで、そこの管理を任されているので業務効率化とプログラミングの勉強を兼ねて`リース管理アプリ`を作成しようと思いました。
# 躓いたところ
1. リース商品は契約開始日や更新日、解約日など日付を入力する部分がたくさんあります。
講座を写径しながら、自分で作りたいものに作り替えいくとエラーにぶち当たりました。
エラーに慣れていなくてまったく読みもせずに、どこを写し間違えたかと見直し→書き直し→migrateをループし

元記事を表示

PHPファイルの読み込み方

#ファイルの読み込み方の種類
PHPのファイルの読み込み方には1行ずつ読み込むか一気に読み込むかの2通りあります。
1.1行ずつ読み込む→fgets()
2.一気に読み込む→fread()

具体的に
##fgets()
流れ
1.第二引数にreadの頭文字を取った’r’を設定してファイルを読み込む。
2.fgets()は読み込む行が無くなった場合falseを返すのでfalseが返るまでwhileで1行ずつ取得し表示。
3.ファイルを閉じる。

“`php
$fp = fopen(“ファイル名”, “r”);
while (($content = fgets($fp)) !== false){
echo $content;
}
fclose($fp);
“`

##fread()
流れ
1.第二引数にreadの頭文字を取った’r’を設定してファイルを読み込む。
2.fread()で全ての値を変数に格納。
3.ファイルを閉じる。
4.格納されたものを表示。

“`php
$fp = fopen(“ファイル名”, “r”);
$contents = fread($fp, fi

元記事を表示

【3秒で】phpでリダイレクト

“`php

“`

元記事を表示

[Vulnhub]Quaoarの脆弱性診断

# はじめに

## 免責事項

:::note alert
本記事で紹介する内容は、教育目的または脆弱性について仕組みを理解し周知、啓発を行うためだけに作成しております。
記載されているコードを実行した場合の損害は一切責任を負いません。
また、ハッキング行為をいかなる稼働環境・サービスに対しても行わないでください。成功しなくても試みること自体が違法行為にあたる場合があります。
上記の内容を十分理解された方のみ本記事をお読みください。
:::

また、本記事の記載内容で、法的または倫理的に問題があると思われる箇所、その他お気づきの点などがございましたら、お手数ですがコメント欄までお知らせください。

## Quaoarの概要

2017年6月にViper氏により制作されました。

ダウンロードは以下よりできます。

https://www.vulnhub.com/entry/hackfest2016-quaoar,180/

以下のコメントがありました。

>クアオールへようこそ
これは、Hackfest 2016 CTF http://hackfest.ca/ のために私が作成した脆

元記事を表示

XAMPPでYahoo!メールからメールを送信する

XAMMPのローカル環境で、PHPを使って自分のYahoo!メールアカウントからメールを送信する方法を解説します。

# 環境
– PC : Windows10
– ローカル環境 : XAMPP version 3.3.0
– メール : Yahoo!メール

尚、gmailでも基本的なやり方は同じですが、SMTPのポート番号や外部アプリケーションの受け入れ設定などが変わってきます。gmailの解説をした記事は既に多数ありますので、本稿では解説しません。

# php.iniファイルの設定
まずは、いくつかのXAMPP設定ファイルの内容を変更する必要があります。  
ひとつめは`php.ini`ファイルです。ファイルの場所はデフォルトでは`C:\xampp\php\php.ini`になります。  

:::note warn
作業前には必ずバックアップを取るようにしましょう
:::

ファイルを見つけたら、テキストエディタで次のように修正します。該当箇所は`mail function`で検索すると出てきます。

“`php.ini
[mail function]
SMTP=loc

元記事を表示

【Laravel,MySQL】設定ファイル.env、.env.example、database.phpの違いとは?

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はLaravelでDBを利用する際の設定ファイルについてまとめます。
なお、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%

元記事を表示

ページごとに別のスタイルシートを読み込みたい

# やりたいこと
ページごとに違うスタイルシートを読み込む。
htmlからPHPにした際に、ヘッダーはheader.phpにまとめたので、動的に読み込むスタイルシートを変更させたい。

* index.php のとき style.css
* mypage.php のとき mypage.css

を読み込むようにする。

# 変数を使ってそれぞれにシート名を代入する
PHPの変数を使って動的に読み込む。

“` header.php 【Laravel-Mix】npm run productionしたらエラーが出た時の苦し紛れの解決方法

###npm run productionしたらエラーが出た

“`powershell:Terminal
npm run production
“`

##前提
Laravel 8.4
webpack-cli 4.9
Laravel-mix 5.1

Laravel-uiのLaravel-mixを使いたかった。

“`package.json
“scripts”: {
“production”: “cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js –no-progress –hide-modules –config=node_modules/laravel-mix/setup/webpack.config.js”
}
“`

#苦し紛れの解決方法
###そうだ、Laravel-mixを最新にしよう
“`bash:Terminal
npm install laravel-mix@latest
“`

私の環境ではうまくいきました。

“`nodejs:T

元記事を表示

備忘録~詰まってしまった繰り返し処理においての疑問点

“`
‘;
$score = (int)trim(fgets(STDIN));
if ($score === -1){
break;
}

$scores[] = $score;
$sum = 0;
for ($i = 0; $i < count($scores); $i++) { echo $i + 1 . ':' . $scores[$i] . PHP_EOL; $sum += $scores[$i]; } echo '合計:' . $sum . PHP_EOL; } while(true); /* 80=>
点数を入力 >80
1:80
合計:80

80=>
1:80
2:80
合計:160
点数を入力 >
*/

“`
上コードは入力した値とその合計を出力する。

“`

元記事を表示

(備忘録)初学者からLaravelで開発できるまでの要点まとめ

まずは軽くLaravel内でのクラス、メソッド、プロパティの書き方をおさらい

クラスが持つ「変数」を「プロパティ」と呼びます。
クラスが持つ「関数」を「メソッド」と呼びます。

プロパティはpublic、private、protected (アクセス修飾子)で定義します。

クラス内でプロパティやメソッドを参照するときは、$this という変数を使います。

このときプロパティ名に$(ダラー)はつけません。

× $this->$number1   〇 $this->number1

クラス(設計図)からインスタンス(newで定義)を作成。

インスタンス内のプロパティやメソッドにアクセスするには、オブジェクトに対して -> (アロー演算子)を使用します。
$math = new Math; //クラス(Math)からインスタンスを作成。

※ 作成したインスタンス($math)は、クラスで定義したプロパティ($number1,$number2)とメソッド( add(),minus() )を持ちます。
$result1 = $math->ad

元記事を表示

Laravel5.5 ファイルアップロードメソッド(store)を使用せずに画像ファイルを保存

一般的にアップロードされた画像ファイルの保存方法は下記のようになります。Laravelでは、画像アップロードのフォームから送信された画像に関してはstoreメソッドを使用すれば、簡単にサーバーに画像を保存する事が可能なのですが、画像URLのパスを取得して、直接的に画像を保存する場合は若干処理が助長的になってしまうのがネックだと思います(この部分もっとスマートに出来るよ等、アドバイスがあればコメント欄にて教えて頂けますとありがたいです!

“`
$path = $request->file(‘userimage’)->store(‘public/img’);
$image = User::find(\Auth::id());
$image->image = basename($path); //imageカラムに保存
$image->save();
“`

#前提
上記のように、アップロードされた画像ファイルの保存処理はLaravelだと簡単に書けるのですが
バッチ処理等で画像ファイルのパス(URL)を予めDBに格納した場合の、画像ファイルを保存する方法で少し躓いたのでメモ代わりに

元記事を表示

空白投稿もエラーメッセージが表示されない(Laravel)

# <エラー概要>
◉LaravelMix学習

:::note warn
Class “App\Http\Controllers\Admin\Profile” not found
:::

#<仮説>
・ Profileが存在するか確認
・ 名前空間とファイル名の命名規則相違
・ ファイルの階層を、Profileの名前を確認
・ namespace App;
→ namespace App\Models;

※いずれも変化なし。

#<解決方法>

①複数形になっているmodel削除
②単数系で再度作成
③validation.phpで日本語表示に設定

modelは原則単数系で命名しないといけないにも関わらず、
複数形で命名していたことが原因。
冷静になって基礎から調べたら解決できました。

元記事を表示

【Laravel】フォーム送信時に419 Page Expiredが発生する件について調べてみた

#概要
本記事は、[PHPフレームワークLaravel入門 第2版](https://www.amazon.co.jp/PHP%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFLaravel%E5%85%A5%E9%96%80-%E7%AC%AC2%E7%89%88-%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798060992/ref=pd_lpo_1?pd_rd_i=4798060992&psc=1)で学習している中の疑問・つまづきの備忘録です。

今回はCSRF対策の際のエラー解決と根本原因についてまとめます。

#発生したエラー

フォーム送信時に以下のエラーが発生しました。

![スクリーンショット 2022-01-08 12.03.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2475547/014f3ed8-896f-6f72-be5e-602b6f2

元記事を表示

PHP基礎

#PHPの宣言
HTMLでPHPを宣言するには``内に記述する。
また1行の場合は、末尾の`;`を省略できる。

“`sample.php

// 1行の時は、セミコロン不要

“`

#変数
変数の宣言と使用

“`sample.php

“`

#計算
加減乗除

“`sample.php

“`

簡略化した書き方

“`sample.php

元記事を表示

【Laravel8.x】Laravel + Ngram + Observerを利用した全文検索機能の実装ハンズオン

# はじめに

本記事は以下の続編になります。
https://qiita.com/naoki-haba/items/ace7a5d1e0d9d72ed040

## 続編記事を書くことにした経緯

シンプルなテーブル構成の場合は以下の通りにすれば全文検索の準備は整います

“`php
DB::statement(“ALTER TABLE shops ADD free_word TEXT as (concat(IFNULL(age, ”), ‘ ‘,IFNULL(name, ”), ‘ ‘,(case gender_id when 1 then ‘男性’ when 2 then ‘女性’ else ” end), ‘ ‘)) STORED”);
“`

しかし、複雑な要因(複数テーブルとの外部結合が必要な場合etc)の場合に、上記の記述をすることに苦労したので、今回は対処方法の選択肢の1つとしてご紹介させていただきます。

# 記事の流れ

1.既存のDDLから`free_word`カラムを削除する
2.ダミーデータを投入する
3.`free_word`カラムを追加する
4.

元記事を表示

Laravel備忘録

#はじめに
Laravelのプロジェクトを作成するにあたって毎度実行することは変わらないが、覚えるのが大変なものを備忘録としてまとめ上げた。

# 目次
1. [プロジェクト初期設定](#プロジェクト初期設定)
2. [migrationファイル作成](#migrationファイル作成)
3. [Herokuデプロイ](#herokuデプロイ)

# プロジェクト初期設定
## Laravelプロジェクトを作成
composer create-project laravel/laravel –prefer-dist プロジェクト名

## サーバーを起動
“` bash
cd プロジェクト名
php artisan serve
“`

## Bootstrapのダウンロード & Login関連の見た目を作る
“` bash
composer require laravel/ui
npm install
npm run dev
npm run dev
php artisan ui bootstrap –auth
“`

## モデルの作成
“` bas

元記事を表示

OTHERカテゴリの最新記事