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

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

#09 PHP でリダイレクトがうまくいかないときに確認すること

## はじめに
今回は備忘録としてheader 関数でよくあるエラーの原因をまとめました。
「PHP でリダイレクトしたいのにうまくいかない…。」
そんな方に確認していただきたい内容です。

## PHPでリダイレクトする方法
header 関数は、HTTP ヘッダを送信する役割があります。
Location を使うことで指定した URL へ遷移することができます。

~~~PHP

~~~

※ URL は絶対パスでも相対パスでも指定できます。
※ リダイレクト以降のコードが実行されないよう exit 関数で処理を終了させています。

## よくあるエラーとその原因

### 1. HTML の出力後に header() を呼び出している
~~~php:例1


// header() の前に出力している

~~~

元記事を表示

#07 AWS(APIGateway/Lambda) + Serverless Framework + BrefでサーバレスなLaravel環境を構築してみる②

# はじめに
今回は前回の記事「AWS(APIGateway/Lambda) + Serverless Framework + BrefでサーバレスなLaravel環境を構築してみる①」の続きになります。前回はPHP動作環境を構築してみましたので、今回は記事のタイトルにある通りLaravel動作環境をAWSにデプロイしてみます。

# 1. 前提条件
AWSの各種サービスに対する基本的な知識、AWS CLI設定済み、npm/composerインストール済み、Serverless Frameworkインストール済み

# 2. 動作環境
npm:9.6.1
composer:2.1.14
AWS CLI:2.5.5
Serverless Framework:3.2.81
Bref:1.7
PHP : 8.2.1
Laravel : 10.4.1

# 3. 今回利用するツールに関して
前回利用したBrefとServerless Frameworkに加えて、AWSでLaravelを実行するためにLaravel-Brefを利用します。

### Laravel-Brefとは
Laravel-

元記事を表示

【Laravel】Illuminateにある主要メソッド Pagination編

### 言語
– Laravel8

## Illuminateとは
– Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
– サービスやコンポーネントは“Illuminate“名前空間内に整理されている

### どこにあるか?
**“プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~“**

## Illuminate\Pagination
– Laravelのページネーション機能を提供するためのクラスがある。

### “paginate()“
– 指定された項目数で結果をページ分割
“`Laravel
$users = DB::paginate(10);
“`

### “simplePaginate()“
– シンプルな「前へ」「次へ」リンクだけを含む簡易的なページネーション
“`Laravel
$users = DB::simplePaginate(10);
“`

### “links()“

元記事を表示

【Laravel】Illuminateにある主要メソッド Http編

### 言語
– Laravel8

## Illuminateとは
– Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
– サービスやコンポーネントは“Illuminate“名前空間内に整理されている

### どこにあるか?
**“プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~“**

## Illuminate\Http
– リクエストとレスポンスの操作を提供する。

## Illuminate\Http\Request

– “Request“クラスはHttpリクエストに関する情報を管理するためのメソッドを提供。

### “all()“
– 全ての入力データを取得
“`Laravel
$allData = $request->all();
“`

### “input($key = null, $defalt = null)“
– 指定されたキーの入力データを取得
“`Laravel
$nameDat

元記事を表示

【初心者向け】PHPで知っておきたい実装方法3選

# はじめに
こんにちは!
株式会社BTMの畑です。

今回は、これからPHPでプログラミングを始める方や、いざ実務でコードを書いていくぞーという方向けに、知っていると役に立つ実装方法をご紹介します。

#### 軽く自己紹介
私自身、他業種からプログラミング未経験での入社だったので、初めは分からないことばかりでした。
特に、プログラミングの教本や学習サイトでは紹介されない実装方法は、自分で調べて情報にたどり着けないと、そもそも存在にすら気付けませんでした。
実際に実務のソースコードを見たり、先輩エンジニアからレビューやフィードバックを受けて初めて「えっ、そんな実装方法あったんだ!」と知るものも多かったです。

未経験で入社したばかりの自分に宛てて、当時こういうこと知っていたら助かったなー、と思う内容を紹介していきますので、新たなチャレンジを選んだ皆様の一助となれば幸いです。

:::note info
本記事で紹介する実装方法は以下のバージョン以降で対応しています
・PHP 8.0.11
:::

# PHPで知っておきたい実装方法3選
それでは早速見ていきましょう!

##

元記事を表示

LaravelでReCaptchaのテストをスキップする方法

以下の二つを `.env.testing` に追加する。
“`tex:.env
NOCAPTCHA_SITEKEY=6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
NOCAPTCHA_SECRET=6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
“`

“`php:config/no-captcha.php
env(‘NOCAPTCHA_SECRET’, ‘no-captcha-secret’),
‘sitekey’ => env(‘NOCAPTCHA_SITEKEY’, ‘no-captcha-sitekey’),
]
“`

# 参考文献

https://developers.google.com/recaptcha/docs/faq?hl=ja

https://stackoverflow.com/questions/49014874/how-do-i-fake-a-recaptcha-in-a-unit-test

元記事を表示

#05 AWS(APIGateway/Lambda) + Serverless Framework + BrefでサーバレスなLaravel環境を構築してみる①

# はじめに
最近、サーバレスにLaravelを運用する環境を目にする機会がありました。
その際に利用されていた技術について備忘録として複数回に分けてこのブログにまとめていこうと思います。
今回は、BrefとServerless Frameworkに焦点をあて、PHP動作環境をAWSにデプロイしてみます。

# 1. 前提条件
AWSの各種サービスに対する基本的な知識、AWS CLI設定済み、npm/composerインストール済み

# 2. 動作環境
npm:9.6.1
composer:2.1.14
AWS CLI:2.5.5
Serverless Framework:3.2.81
Bref:1.7

# 3. 今回利用するツールに関して
### 1. Brefとは
Brefとは、一言で言えばAWS LambdaでPHPを動作させるための各種設定を行うCLIで、OSSとして提供されています。
LambdaのランタイムにはPHPは存在せず、カスタムランタイムとして利用する必要があります。
カスタムランタイムとしてPHPをLambdaで利用するための各種設定などの煩わしい作業を簡単に

元記事を表示

#04 Laravel Overview & Setup (Routing & Middleware basics)

## Introduction

PHP is a kind of old web development language which released in 1995. But it has a variety of frameworks for web development and it is still a popular language in the real world. This time, the most famous PHP full-stack framework will be introduced. Laravel.

So, **what is Laravel?**

> Laravel is a web application framework with expressive, elegant syntax. A web framework provides a structure and starting point for creating your application, allowing you to focus on creating s

元記事を表示

LaravelのFeatureテストでうまくいかない時に試してみること

# 例外が出ていないか確認コードを入れてみる
“`php:魔法の三行
if ($response->exception) {
dd($response->exception);
}
“`

Controllerのメソッドをテストするためにリクエストを投げても、そのメソッドにそもそも辿り着いていなさそうなエラーが出ている時があった。
具体的には、会員登録ページの「登録ボタンの遷移」テストをしているときに、意図している仮登録完了後のページに遷移していなかったのだ。

“`php:
public function test_登録処理テスト_バリデーション()
{
$name = FakerFactory::create()->unique()->regexify(‘[A-Za-z0-9]{10}’);
$request = new Request([
‘name’ => $name,
‘email’ => FakerFactory::create()->unique()->email(),
‘password’ =

元記事を表示

【Laravel】Illuminateにある主要メソッド Cache編

## はじめに
Laravelでよくでてくる“Illuminate\~\~“って結局何だ?!と思いメソッドをまとめました。

### 言語
– Laravel8

## Illuminateとは
– Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
– サービスやコンポーネントは“Illuminate“名前空間内に整理されている

### どこにあるか?
**“プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~“**

## Illuminate\Cache
– キャッシュ機能を提供。データベースやその他の外部リソースへのアクセスを減らし、アプリケーションのパフォーマンスを向上させることが期待できる。

## Illuminate\Cache\Repository

– “Repository“クラスはキャッシュ機能を管理するためのメソッドを提供。

### “get($key, $default = null)“
– 指定されたキャッシュデータを取得
“`

元記事を表示

[PHP] 可読性0の短めなbase64エンコード・デコード関数

## あいさつ
こんにちは、 [codebydeer.com](https://codebydeer.com) の UziDeer です。
今回はphpを2進にしたり+/=を取り除いたりの関数を、できるだけ短い(?)コードで書きました。
作った理由には、phpのbase64関連の関数があんまり充実していなく、軽く調べてみても冗長なものしか無かったということに加え、自分のコードの内容理解を深めようと思ったからです。
短く書こうと頑張ったら可読性が死にました(笑)

では見ていきましょう。

フォローしてくれたらうれしいな

https://x.com/codebydeer

## 書いたコード

phpのbase64関連関数たち

“`php
$b64Arr = range(“A”, “Z”) + range(“a”, “z”) + range(“0”, “9”) + [“+”, “/”]; //base64の64進の数字になる[A-Za-z0-9+/]の文字の配列を用意

function b64

元記事を表示

🌟 エキサイティングなニュース: ServBay 1.3.9がリリースされました!

最新のServBayアップデートを発表できることを嬉しく思います。開発ワークフローを加速させる新機能が満載です!バージョン1.3.9で期待できることは次のとおりです

### 1.3.9の新機能
– **クイックサーチマジック:** 新しい検索機能でホストやDNS設定を素早く検索—必要なものを瞬時に見つけることができます!⚡
– **お気に入りを手元に:** よく使うホストやメニューバーアイテムにスターを付けて、すぐにアクセス。あなたのワークフロー、お気に入りに合わせて!🌟
– **メニューバーの刷新:** メニューバーを整理して、簡単にナビゲートできるようにしました。シンプルさと効率性が全てです。
– **UIアップグレード:**
– 新しい「フォルダを開く」ボタンでプロジェクトに直行。
– ダッシュボードのテキストがあなたの言語で表示され、よりローカルな感じに。
– アップデート後すぐに新機能を発見—最先端を簡単にキャッチアップ。
– 最適化されたUIディテールで滑らかな操作を体験。
![image.png](https://qiita-image-store.s3

元記事を表示

PhpStormでコードを実行しようとすると`Cannot run program “/usr/local/bin/docker-compose”`のエラーとなる

## 現象

あるPHPコードを実行しようとすると以下のエラーが発生した。

“`
com.intellij.docker.agent.ApiTaskException: com.intellij.execution.process.ProcessNotCreatedException: Cannot run program “/usr/local/bin/docker-compose”
“`

## 環境

### OS

“`
sw_vers
ProductName: macOS
ProductVersion: 14.5
BuildVersion: 23F79
“`

### Docker

“`
docker -v
Docker version 27.0.3, build 7d4bcd8
“`

### Docker Desktop

“`
Docker Desktop 4.32.0 (157355) is currently the newest version available.
“`

## 解決方法

`設定 -> ビルド、実行、デプロイ -> D

元記事を表示

【Laravel】Illuminateにある主要メソッド Cookie編

## はじめに
Laravelでよくでてくる“Illuminate\~\~“って結局何だ?!と思いメソッドをまとめました。

### 言語
– Laravel8

## Illuminateとは
– Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
– サービスやコンポーネントは“Illuminate“名前空間内に整理されている

### どこにあるか?
**“プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~“**

## Illuminate\Cookie
– クッキー操作を管理するためのクラスがある。
:::note
Cookieとは、、、
初めてアクセスしたWebサイトに、訪問したユーザーを識別できる情報が保存されること
:::

## Illuminate\Cookie\Cookiejar
– “Cookiejar“クラスでクッキーの作成、取得、削除などの操作を行うメソッドがある

### “make($name, $value, $minutes = 0,

元記事を表示

PHPコア開発者になって半年経ったので、php-srcでの活動を振り返る

こんにちは!PHPとCを主に書いています、Sakiです。日中はBASE株式会社さんでお仕事させていただいています。早朝と夜間にphp-srcでの活動をしています。PHP8.4のリリースマネージャーもやってます。

2024年からありがたいことにPHPコア開発者として採用していただき、半年とちょっとになりました。ちょうど一区切りということで、これまでの活動を簡単にまとめたいと思います。細かいものや、最終的に成果が出なかった(議論がまとまらなかったなど)ものは除外しています。
# 2023年、コア開発者になる前
実は私はphp-srcどころかOSSの経歴がかなり短いです。
## はじめてのコントリビュート
PHP8.1から、PDO MySQLでmysqlndをドライバとして使用し、`PDO::ATTR_EMULATE_PREPARES`が`true`の場合、PHPのネイティブタイプで値が返される、というように仕様が変更されました。従来の動作を望むなら`PDO::ATTR_STRINGIFY_FETCHES`を`true`にしてね、とドキュメントには記載されています。

ところが、(すでにM

元記事を表示

押さえておきたいセキュリティと対策!

こんにちは!もうすぐ3年目を迎える受託系企業で働くガッキーです。
2年目のうちに知っておかなきゃいけない知識とか実装とか焦りながら考えていたら、
まず思い浮かんだことがセキュリティだったので書いてみました!

# なぜセキュリティを守らなければならないのか!?

そもそもなぜセキュリティを確保しなければならないのか?

– 第三者への情報漏洩
– 情報の改ざん
– 第三者による不正な利用

これらを確保せずアプリケーションを確保すれば、
利用者への被害が拡大しアプリの信頼が失われ、会社経営への影響が出てきてしまうのです。

さっそく押さえておきたいセキュリティを見ていきましょう!

# 1.SQLインジェクション

:::note info
SQLインジェクションとは?

入力フォームにSQL文を入力し送信することでデーターベースの改ざんや取得がされてしまうものです。
:::

不正なselect・delete・update文を入力することで、
そこから個人情報が流失し、ユーザー情報が改ざんされ様々な問題に発展します。

例えば、ログイン画面のID・PWフォームに以下のような値を

元記事を表示

laravelでthe stream or file /var/www/html/storage/logs/laravel.logエラーが出たときの対処

# docker環境でローカルホストを開いたときに`the stream or file /var/www/html/storage/logs/laravel.log`(以下略)というエラーが表示された

# エラーの意味
大まかな意味としてはlaravel上でログファイルへの書き込みが失敗していますよ〜という意味らしい。

# 考えられる原因

・**パーミッションの問題**:ログファイルのパーミッションが正しく設定されていない。Webサーバーのユーザー(例えば、ApacheやNginxなど)が書き込み権限を持つ必要がある

・**ログファイルが存在しない**:そもそもログファイルが存在していない場合。

上記の2点が原因として考えられると思いますが今回はエラーメッセージに`permission denied`と表示されていたのでパーミッションの問題かと考えられます。ログファイルも(storage/logs)にしっかりと存在していました。

# 対処法

### 1.ターミナル(プロジェクト直下)で`sudo chmod o+w ./storage/ -R`を入力

### 2.続け

元記事を表示

【Laravel】Illuminateにあるメソッド Auth編

## はじめに
Laravelでよくでてくる“Illuminate\~\~“って結局何だ?!と思いメソッドをまとめました。

### 言語
– Laravel8

## Illuminateとは
– Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
– サービスやコンポーネントは“Illuminate“名前空間内に整理されている

### どこにあるか?
**“プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~“**

## Illuminate\Auth
– 認証システムを管理するためのクラスがある。

## Illuminate\Auth\AuthManager

– “AuthManager“クラスは認証の設定とドライバの管理を行う

### “guard($name = null)“
– 指定した認証の方法を取得する
“`Laravel
$user = Auth::guard(‘admin’)->user();“
“`

##

元記事を表示

【PHP】2024年のPHP開発者を支える中心人物たちを勝手に紹介するよ

PHPの隆盛を支えてきた開発者は非常にたくさん存在しますが、その中でも最近のPHPを支えている中心の有力者たちを紹介します。

選択の基準ですが、[PHP Foundation](https://thephp.foundation/)の[Structure](https://thephp.foundation/structure/)に載っている人です。
他にも紹介したい人はたくさんいるのですが、きりがないですし、そもそも私はPHP言語開発者たちやコミュニティと一切関わりのない全く無関係な人間なので勝手に選抜するのもなんだかなあということでやめておきます。

# PHP Foundationとは

まずPHP Foundationって何なのかという話ですが、ここ数年PHP言語の発展を支えている団体です。

実は長らくの間PHP言語は、言語自体を支えている団体がおらず、ボランティアの個人が集まって開発が進められていました。
これは言語としてはかなり特異な状態であって、たとえばPHPと同列に語られがちなLLを見てみると、Rubyには[Ruby Association](https://ww

元記事を表示

PHPでSSL関連のエラーでハマった件

CentOS7からUbuntu24.04にサーバーを入れ替えたところ、以下のエラーで悩んだ!
`Warning: getimagesize(): SSL operation failed with code 1. OpenSSL Error messages:
error:0A000086:SSL routines::certificate verify failed in ・・・/tcpdf_images.php on line 166`

php.iniの[openssl]セクションに
`openssl.cafile=/etc/ssl/certs/SectigoRSADomainValidationSecureServerCA.crt`を追加してもダメ
`/usr/lib/ssl/openssl.cnf`にlegacy_sect追加してもダメ

散々ググって、やっと[これ](https://serverfault.com/questions/1118578/ubuntu-cannot-verify-sectigo-certificate)見つけて解決

`# cp /et

元記事を表示

OTHERカテゴリの最新記事