PHP関連のことを調べてみた

PHP関連のことを調べてみた

Laravel+Xamppローカル環境作成-ハンズオン:①Xampp・Composer・Vscodeインストール編

# ①Xampp・Composer・Vscodeインストール編

最近個人でLaravelアプリの開発を行うことが多く、環境作成について忘れていたのでハンズオン形式で記事を作成しました!

温度感としては初学者や初めてローカル環境や開発環境を作成したい方もわかるように記載しますので冗長的な部分は暖かい目でお願いします。

また、筆者がWindows環境なのでMacでのハンズオンではないことをご理解ください。

よくDocker+Xmappなどの構成も見るので時間があったらまとめたいと考えています~

## 作業の流れ

Laravelをインストールし起動→初期画面を表示するまでの作業の流れです。

現在自分が何をどこまで作業したかなどイメージができると良いと思います。
![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602338/5c9aee43-e61c-ccfb-15b0-cd0cb6f1324d.png)

今回の記事では、step1~3までのインストール範囲を記載していま

元記事を表示

【Laravel】静的解析ツール「Larastan」の導入

## 1. Larastanとは
[Larastan](https://github.com/larastan/larastan)はPHPの静的型解析ツールである[PHPStan](https://phpstan.org/user-guide/getting-started)をベースにしており、
アプリケーション内のコードを解析して型の整合性やエラーをチェックします。
これにより、潜在的な型関連のバグやエラーを早期に発見し、修正することができます。

## 2. 導入方法
### 2.1 インストール
Composerを使用してLarastanをプロジェクトに追加。
“`PHPのバージョン < 8.0の場合 composer require nunomaduro/larastan:^1.0 --dev ``` ```PHPのバージョン >= 8.0の場合
composer require nunomaduro/larastan:^2.0 –dev
“`
### 2.2 設定ファイルの作成
プロジェクトのルートディレクトリに設定ファイル“`phpstan.neon“`を設置。

元記事を表示

Try Hack Me Writeup: RootMe

# はじめに
今回は私がTryHackMeで初めて解いたPractice問題「RootMe(難易度はEasy)」のWriteupを書こうと思います.ちなみに初Writeup執筆なので改善点などありましたがぜひ教えてください.

# Task1:Deploy the machine
これはただマシンを起動させるだけです.今回はVPNを使用します.

# Task2:Reconnaissance

### ポートスキャン
“`sudo nmap -p- -vv -T4 -O -sV [IPアドレス]“`

![Pasted image 20240221174155.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015493/831b1b3c-33c5-32ee-2371-05e517ef4903.png)
この結果から空いているポートは(22番と80番)ということがわかります.
それ以外にもそのポートが何のサービスがやバージョンなどもわかります.

### ディレクトリ探索
gobusterを使

元記事を表示

bindValueでSQLインジェクション対策

## 目次
1. [SQLインジェクションについて](#SQLインジェクションについて)
2. [SQLインジェクション対策](#SQLインジェクション対策)
3. [bindValue()関数](#bindValue()関数)

## SQLインジェクションについて
`SQLインジェクション`とは、第三者がSQLコマンドを悪用してデータベースの情報へ不
正アクセスし、情報を搾取や改ざん削除する攻撃手法である。

## SQLインジェクション対策
1. 入力値を制限する
2. 入力値をいったん変数に格納する
3. エスケープ処理、サニタイジングを行う
4. 常に最新の環境を保つ
5. セキュリティソフトWAFを導入する

上記5つの対策があるが、「2. 入力値をいったん変数に格納する」対策方法についてピックアップする。

## 入力値をいったん変数に格納する

入力された文字列をそのままSQL文として利用せず、いったん変数に格納する対策方法です。あらかじめ`プリペアドステートメント`と呼ばれるSQL文を用意しておき、その一部を`プレースホルダ`と呼

元記事を表示

Laravel 8.x/PHP7.4 環境で Laravel Dusk の ChromeDriver を使用して Web スクレイピングしてみた

# 概要
Laravel でヘッドレスブラウザを使用して Web スクレイピングをしたいのですが、 Selenium(php-webdriver) や php-phantomJS などより、Laravel 公式パッケージでブラウザテストの自動化およびテスティング API の [Laravel Dusk](https://github.com/laravel/dusk) を使用してWebスクレイピングできないか調べてみました。

現在の環境が PHP7.4 環境ですので、必然的にLaravel のバージョンは 8.x となります。PHP と Laravel のバージョン対応表は [こちら](https://readouble.com/laravel/10.x/ja/releases.html)

# Laravel 8.x プロジェクトの作成
~~~php:
> composer create-project laravel/laravel=8.* scraping
> cd scraping
~~~

# Laravel Dusk のインストール
プロジェクトに Laravel/Dus

元記事を表示

phpenvが動かなかったためDockerを使ってPHPの特定のバージョンでComposerを動かす

phpenvが動かなかったためDockerを使ってPHPの特定のバージョンでComposerを動かしました。

# 結論

“`json:composer.json
{
“config”: {
“platform”: {
“php”: “MAJOR.MINOR.PATCH”, # ここにバージョンを書く
“ext-something”: “MAJOR.MINOR.PATCH”
}
}
}
“`

https://hub.docker.com/_/composer

“`bash
docker run –rm -v $(pwd):/app composer/composer update
“`

# 経緯
少し古い Larave(Laravel8)が入っているリポジトリを引っ張りだして動かそうとしたところ、依存関係のライブラリがPHP 7.3 でしか動かなくなっていました。
2024年2月現在では手元の環境(MacOS)には PHP8.3 が brew で入っていました。

これまでは古いバージョンのP

元記事を表示

Laravel + Vue.js で環境構築に戸惑った

# 参考資料
https://zenn.dev/eguchi244_dev/articles/laravel-vue-docker-introduction-20230828#%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%81%AE%E7%9B%AE%E6%A8%99

上記サイトを参考にLaravelとVue.jsで環境構築していた。
今回はLaravelの10系で挑戦。

# 現象
dockerにてサーバーを立ち上げたあと、localhostへ遷移すると、以下のエラーが発生し、Laravelの初期画面が表示されない・・・。

“`
Vite manifest not found at: /var/www/hogehuga/public/build/manifest.json
“`

# 原因
node がインストールできていなかった。

# 対応
– Node.js公式サイト: https://nodejs.org/en/ からNode.jsをインストール

– 以下のコマンドでViteをインストール

`npm install –g

元記事を表示

【Composer】コマンドちょこっとまとめてみました

## 導入
前回は、composerのインストール・基本的なコマンドを紹介しました。

https://qiita.com/umekikazuya/items/841e28180472a7da7959

今回はよく使うよ・便利だよってコマンドやオプションについて10個ほど紹介します。

## コマンド10選
### 1. “composer show“
インストールされているパッケージの一覧や、特定のパッケージの詳細情報を表示します。バージョン・説明・ライセンスなどの情報が確認可能。
“`bash
$ composer show

guzzlehttp/guzzle 7.8.1 Guzzle is a PHP HTTP client library
guzzlehttp/promises 1.5.3 Guzzle promises library
guzzlehttp/psr7 1.9.1 PSR-7 message implementation that also provides comm…
.

元記事を表示

【PHP】PHPフレームワークFlowのserver:runコマンド実行時の動きについて

# 初めに
Flowでは`./flow server:run`というコマンドを叩くことで、開発用の簡易的なサーバを立てることができます。
今回は、このコマンドでは実際にどんなことが行われているのかを見ていきます。

# server:runコマンド
`server:run`コマンドはシンプルです。
以下のコマンドを実行するだけで、簡単にWebサーバを立てることができます。

“`sh
$ ./flow server:run
Server running. Please go to http://127.0.0.1:8081 to browse the application.
[Wed Feb 21 20:49:17 2024] PHP 8.1.25 Development Server (http://127.0.0.1:8081) started
“`

ホストとポートはオプションで設定可能です。

“`sh
$ ./flow server:run –host 127.0.0.2 –port 9999
Server running. Please go to http

元記事を表示

PHP GoogleClientを利用したOAuth認証でrefresh_tokenが取得できない場合の対応

PHPのGoogleClientを利用して、OAuth認証を行う場合にリフレッシュトークンが取得できずエラーになる場合がありました。

※ログイン時、アクセストークンは取得できるので直後は問題ないが、1時間程度経過するとエラーになる

エラーメッセージの例
* error: ‘invalid_grant’
* error_description: ‘Bad Request’
* refresh token must be passed in or set as part of setAccessToken

### 原因

1. アクセストークンは初回ログイン時のみ入手できる(再度ログインしても取れない)
* アクセストークンが取得できるのは、ログイン時に「スコープの確認」が表示されたときだけ
* スコープの確認は2回目以降表示されないため、初回を逃すと正しいプログラムでもリフレッシュトークンは取れない
2. アクセストークンを取得するには「AccessType: offline」かつ「ApprovalPrompt: force」である必要がある
3. 初回に間違いのあ

元記事を表示

共有レンタルサーバにCodeIgniter4をインストール

要件:PHP7.4以上とSSHが使えること(できればPHP8が望ましい)

かたくなにクラウドとdockerをつかわないスタンス
とりあえず以下の例は Xserver です

2023-02-21時点でCodeIgniter4の最新バージョンは4.4.5

独自ドメイン hoge.com にサブドメイン piyo.hoge.com を切って、そこに新しいサービスを作ると仮定
サーバ上のパスは /home/myaccount/hoge.com/public_html/piyo になる

“`
cd /home/myaccount/hoge.com/public_html
“`

Composer 2.0.14 が必要、PHP使える共有サーバはComposer入ってたりするけどバージョン古かったりするから、カレントに入れちゃう
https://getcomposer.org/download/

“`
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (has

元記事を表示

LaravelとmicroCMSを使用した記事アプリ開発:①API作成編

最近、日本製ヘッドレスCMSを知り簡単な記事アプリを作成してみたので記事にしました。
表題通り、今回はPHPフレームワークLaravelとヘッドレスCMSを使用し簡単なアプリ開発の流れをハンズオン形式として記載しております。
色々調べてみて、NextやJSなどは参考記事があったのですがPHPが少なかったので皆様の参考になれば幸いです。
## 全体概要

目的としては簡単な記事レベルで表示できればを目標にしました。
イメージとして以下構成になります。
認識としてご指摘ありましたら是非コメントお願いいたします!

※Laravelはローカル環境での稼働です、環境に合わせてご利用ください。

![Untitled1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2602338/92b85b28-98c0-97ed-6ff3-95a3bb741a4c.png)

## ①の作業範囲について

今回の①ではAPIの作成、GET送信確認までを作業範囲として記載しています。
アプリの開発含め①~③まで記事にします

元記事を表示

Dockerイメージって何があるの?(PHP編-①)

# はじめに
初めまして!
エンジニアになって数年、今まで本を読むだけでしたが、もっとプライベートで楽しみながら成長したい!自分が学んだ足跡を残していきたい!と思い記事をかきました!
最終的には自在に開発できるようになりたいと思っています。:triumph:
いろいろな記事を参考にさせてもらっています。:bow_tone2:
その中でもこれってどういう意味?とかつまづいたところを念入りに書いていこうかと思います。:fist:

# 今回の目的
Dockerのイメージを選ぶときに、「これどう意味なの?何を基準に判断すればいいの?」となりました。使う範囲でいいから一通りの内容やルールを理解してから使いたいですよね。:thinking:
対象範囲はPHPとPostgreSQLのDocker Official Imageに絞りました。長くなりそうなので記事はいくつかに分けて公開していきます!
今回は下記の内容で進めていきます!

DockerHubで検索
検索文言:php
指定フィルター:Images、Docker Offici

元記事を表示

PHP Development Services Hire Best Company USA

PHP development services are chosen for various reasons due to the flexibility, versatility, and widespread use of PHP as a server-side scripting language People prefer PHP development services because they are affordable, scalable, and compatible. They also have speedy development features. They have a rich ecosystem of frameworks and CMS platforms. They also offer network help, integration abilities, security functions, and support for o

元記事を表示

504エラーが発生してもDBにデータが保存されてしまう問題

# 起こったこと
CSVデータアップロード機能をPHP(Laravel)で作成していた。
1万件以上のレコードを持つ大容量のCSVデータをアップロードし、DBにデータを保存しようとした際、開発環境でタイムアウトエラーが発生してしまい、正常なアップロードが出来なかった。
しかし、DBにはデータがアップロードされていたため、「エラーが発生しているのにトランザクションがロールバックされていない」問題が発生してしまった。

# 原因
CloudFrontはタイムアウト(504 gateway timeout)をクライアントにレスポンスしているが、PHPのプロセスが裏側で動いており、トランザクションが正常にコミットされていたためDBにデータが登録されていた。

# 解決策
大容量のCSVデータ自体は時間がかかっても正常に登録されることが分かったので、DBの該当テーブルに新しくフラグを追加し、
「処理中(デフォルトの値)」
「成功(コミットした場合更新)」
「失敗(ロールバックした場合更新)」
の3種類の値を入れられるようにした。
504エラーが出た際に画面を開きなおしてもらい、フラグの値に応じ

元記事を表示

【PHP】2次元配列をimplodeしたかった話

# はじめに

ある日こんなことを思いました。

2次元配列をimplodeしたい!

と。

# どういうことか
“`
[[1,2,3],[4,5,6]]
“`
こんな多次元配列を
“`
1|2|3|4|5|6
“`
こんな感じに変換したいということです。

# 試したこと① foreach

まずはシンプルにforeachを使って変換しました。

“`php:
$array = [[1,2,3],[4,5,6]];

$result = “”;
foreach($array as $value){
$result .= implode(“|”,$value);
}

echo($result);

// 出力結果
// 1|2|34|5|6
“`
3と4がくっついてしまいました。

implodeで変換したものをresultにくっつけるのではなく、1つの配列を作って一気に変換してみようと思います。

“`php:
$array = [[1,2,3],[4,5,6]];

$resultArray = array();
foreach($array as $va

元記事を表示

【Composer】インストールから基本コマンド紹介まで

## 導入
PHPでWebアプリケーションを開発する際、純粋なPHPのみで実装するケースってほぼほぼないですよね。
なにかしらのライブラリを導入したり、フレームワーク・CMSを利用するかと思います。

そんな時に、使用するパッケージ・ライブラリのバージョン管理を行ってくれるのが**composer**です。

今回の記事ではこれさえ知っとけばどうにかなるんじゃないかという**composer**の基本コマンドをご紹介します。

## composer 本体のインストール
手順は[公式ドキュメント](https://getcomposer.org/download/)に書いている通りで恐らくスムーズ行きます。
(M2・Macでは問題ありませんでした。)

以下を順番に実行してください。
“`bash
php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
php -r “if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘edb40769019c

元記事を表示

議論をするための掲示板Webサイトを作ってみた

## 作った物
『**ディスカッションツリー**』というWebサイトです。
一つの話題に対して複数の意見を出し、それぞれに対して更に複数の意見、またそれに対し複数の意見といった形で、ツリー状にコメントを重ねていく掲示板です。
一つの意見に対して補足や訂正を重ねていく事で、SNSなどで起こりがちな「それぞれ好き勝手な事を言うだけ言って、そのまま話が流れていく」ような状況を回避し、情報を残しながら議論を行う事を目的としています。

https://discussion-tree.net/

<画面>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715891/c612cd89-bdfb-b220-f3ab-a1e52f79fbaf.png)

## 使い方
早い話が、**コメントに対してコメントする機能が付いたYahoo!知恵袋**です。
1. 意見を集めたい、知りたい事に関するトピックを作成
1. コメントで回答
1. 回答に対してコメントで意見する
1. 回答に対するコメントにコメント

元記事を表示

Xampp環境でWebsocketサーバー(自作)をたててみる

## はじめに

Linux環境でサーバーアプリを作った事は今までありましたが、Windows上で開発する時に仮想環境を作ったり、もろもろのサーバーアプリをインストールしたりするのが面倒だったので、Xampp環境だけでWebsocketサーバーをたてられないか検証してみたいと思います。

それにどうせだったらLaravelのフレームワーク環境を使ってクライアントサイドとサーバーサイドのオールインワン環境で進められないか確認してみたいと思います。

:::note warn
この記事では検証作業をメインとしていますのでXamppやLaravel等のツールはインストール済である前提で話を進めます。参考にさせて頂いた資料等はリンク先のサイトをご覧ください。
:::

https://qiita.com/uzued/items/5287dddaa7ffc5c84d6a

## 環境

プラットフォーム
Windows10
統合環境
Xampp v3.3.0
フレーム

元記事を表示

XSS対策でエスケープ処理をする

## はじめに
xssはサイバー攻撃の一種で、悪意のあるユーザが投稿型webページに悪意のあるjavascriptを投稿し、アクセスしたユーザにそのコードを実行させ個人情報を盗むなど攻撃します。

## 対策方法
エスケープ処理を使って対策していきます。エスケープ処理とは投稿されたjavascriptのコードをただの文字列に置き換える方法です。

## 対策方法
今回、対策するにはエスケープ処理をします。javascriptのコードをただの文字列にします。
第一引数はエスケープ処理したい文字列、第二引数はどのように置き換えるか、第三引数は変換時の文字コードになります。
“`php
$string = ‘‘;
$string = htmlspecialchars($string, ENT_QUOTES, ‘utf-8’);
“`
“`

“`
javascriptが実行されずに文字列として出力されました。

## 終わりに
サイバー攻撃は後を絶ちません。また、サイバー攻撃の被害

元記事を表示

OTHERカテゴリの最新記事