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

PHP関連のことを調べてみた2020年06月03日
目次

Laravel フォームリクエストを使用してバリデーションを指定したら403エラーが出た

# 目的

– フォームリクエスト(FormRequest)を使用してバリデーションを実装してブラウザから動作を確認したところルールにクリアしていても403エラーがでてしまい、当事象を解決した話をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| My

元記事を表示

wordpressの立ち上げ

##概要
wordpressのプロジェクトをクローンして立ち上げるまでの備忘録

##やり方
①データベースを作成する
②wordpressのプロジェクトのリポジトリをgithubからクローンする
③このURLからhttps://ja.wordpress.org/download/ wordpressインストールする
④クローンしたディレクトリをwordpressのテーマの配下に移動させる
⑤データベースの情報を登録する

##1. データベースを作成する
localにデータベースを作成する
https://qiita.com/ibarakishiminn/items/ddfc8018b69246cbcbb8

##2. wordpressのプロジェクトのリポジトリをgithubからクローンする
プロジェクトをwordpressのテーマとして設定することで、開発していきたいので、まずはgithubからクローンする。
クローンしたら、そのディレクトリを、後ほどインストールしたwordpressのテーマに持っていく。
作業後wordpressで外観を確認してOKなら、gitで上書きして管

元記事を表示

CakePHP 2.x 画像バリデーション

 今回はCakephp 2.xでの画像のバリデーションについてまとめようと
思います。尚、今回が初の投稿なので適宜アップデートさせていただく事がありますので
ご了承下さい。

やりたい事

1.画像のバリデーション(フォーム、画像アップロード処理の際可能)
2.画像のユニーク化(ファイル名を一意のものにする)

画像バリデーションで出来る事

•フォームでファイル形式を指定する事で意図しないファイル形式を
 選択時点で除外する事が出来る。

•ファイルサイズを指定したサイズにする(最大値、最小値の指定)

•画像の拡張子の偽装チェックが出来る(悪意のあるユーザーからのアップロードを防ぐ、セキュリティ性を高める)

1.画像のバリデーション

まずユーザー情報ページを作るという前提でテーブル構成は以下のようになります。

“`PHP:table
CREATE TABLE `users` (
`id` int(10) UNSIGNED NOT NULL,
`username` varchar(50) DEFAULT NULL

元記事を表示

[TCPDF requires the Imagick or GD extension to handle PNG images with alpha channel. ] が出たとき

* phpでPDFを生成する機能を動かした際、白画面に表題のエラーが返ってきた。
* phpinfo() で確認したらGDライブラリが入ってなかったので入れた。

“`shell
sudo apt-get install php7.3-gd
“`

* インストール時、選択肢を聞かれたところはデフォルト、紫の画面は current keep 的なものを選択。

* おまけ
* phpのバージョン毎にgdがあったので検索してどれを使うか判断する

“`
apt-cache search gd | grep php
“`

元記事を表示

PHP環境設定

#環境の準備
下記サイトから、ウェブサーバーをダウンロードする。
https://bitnami.com/stacks
Mac -> MAMP
Windows -> WAMP

インストール時にMySQLのパスワードを聞かれるが、一旦適当に入力でOK。
インストール完了画面の[Open Application Folder]をクリックする。
[Application Folder] > apache2 > htdocs > ココにindex.phpを配置することで、このファイルを動作させることができる。

#PHP設定

これを設定することで、ウェブサーバーに設置した、phpファイルを変更した際に、
即時に変更が反映されることができる。

キャッシュを無効にするには、下記iniファイルを開いて、opcache.enable=0に変更する。
[Application Folder] > php > etc > ini.php

#PHP基本
###変数とは
– あらゆるデータを格納できる箱のようなもの
– データを何度も入れ替えできる
– 必ず利用前に宣言する必要はない
– 変数名の大文

元記事を表示

マイグレーション実行時にmysqlでユーザーを作成していなかった為エラー

###マイグレーション実行時エラー

laravel7で新しくプロジェクトを作成したので
とりあえずマイグレーションの実行ししてみたら

エラー発生

“`php
SQLSTATE[HY000] [1045] Access denied for user ‘user_name’@’172.20.0.4’ (using password: YES) (SQL: select * from information_schema.tables where table_schema =table_name and table_name = migrations and table_type = ‘BASE TABLE’)
“`

##原因
ただ単に.envに設定したユーザーとパスワードを登録していなかっただけ

##解決方法
mysqlでユーザーを作成をする

“`sql
create user ‘user_name’ identified by ‘pass’;
“`

権限の確認
新規作成したユーザには
何も権限がないことを意味するUSAGEが付いている

“`sql
m

元記事を表示

homebrewを使ってPHPのバージョンアップグレード

# 概要
homebrewを使ってPHPのバージョンアップグレードを行います。
php7.2系 → php7.3系

##homebrewのインストール

[Homebrew](https://brew.sh/index_ja)のインストールがまだの方は、以下の記事を参考に導入をおこなってください。

[MacでLaravel開発環境構築 -Qiita](https://qiita.com/gongyro/items/a87d1417f5299beb22e4)

##手順
現在のバージョンを確認します。

“`sh
$ php -v
PHP 7.2.30 (cli) (built: Apr 23 2020 01:23:39) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.30, Copyright (c) 1999-2018, by Zend Technologi

元記事を表示

DockerでWebアプリ環境構築

#はじめに
本記事は動画( https://youtu.be/vY2z-fOOh6s )で説明に使用している
スライドを記事化したものです。動画と合わせて御覧ください。
[![vY2z-fOOh6s](http://img.youtube.com/vi/vY2z-fOOh6s/0.jpg)](http://www.youtube.com/watch?v=vY2z-fOOh6s)

※記事化する際に補足説明を加筆しており、内容は動画のスライドと異なります。
※本記事の内容は2020年3月時点の内容となります。OSやミドルウェア、Dockerのバージョンが異なることで記載通りの内容で完了しない場合があります。

#構築する環境の構成
– O S  : Cent OS 7.7
– Webサービス : Apache 2.4.6
– DBサービス  :MariaDB 10.4.6
– Webアプリ言語:PHP 7.3.x

#OSの準備
[前回の動画: https://www.youtube.com/watch?v=oT-GSZD8bE4] (https:/

元記事を表示

MacでLaravel開発環境構築

##概要
– [Homebrew](https://brew.sh/index_ja)の導入
– [Composer](https://getcomposer.org/)の導入
– 上記のパッケージ管理システムを利用してPHP&Laravelのインストール

##環境
macOS Mojave 10.14.6

##Homebrewのインストール
[Homebrew](https://brew.sh/index_ja)とはパッケージのインストールやアンインストールを簡単に行うことのできるパッケージ管理システムのひとつです。

[Homebrew](https://brew.sh/index_ja)ページに移動し、インストールコマンドをターミナルで実行します。

![スクリーンショット.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565827/06ccb0ef-58bd-ba17-80d4-0f0b561123fc.png)

“`sh
$ /bin/bash -c “$(curl -fsS

元記事を表示

LaravelでどうしてもSESSIONが追加できないときにすること

# こんなにもシンプルなSESSIONが追加できない

“`php:app/Http/Controllers/HogeController.php
public function show()
{
if (!Session::has(‘token’)) {
Session::put(‘token’, ‘token!’);
var_dump(‘saved!’);
}
var_dump(Session::get(‘token’));
return view(‘welcome’);
}
“`

初回のみ「saved!token!」と表示され、2回目以降は「token!」となってほしい。
しかし、何度試しても「saved!token!」が表示される。

## 不用意にダンプしたらダメなんだってさ

[https://laracasts.com/discuss/channels/laravel/sessions-are-not-saving?page=1](https://laracasts.com/discuss/chan

元記事を表示

【Laravel】Laravel上でスーパーグローバル「$_SERVER」を参照する。

メモとして残します。

`$_SERVER`でも普通に参照できますが、フレームワークを使っている以上、スーパーグローバル変数を直接参照するのはどうかということで、一応、お作法にのっとって、Laravel上でスマートに参照する方法を紹介。

下記の例ではLaravelのヘルパ`request`を使用して、帰ってきたオブジェクトの`server`プロパティを参照しています。

#■確認方法
##$_SERVER要素全て
“`php

request()->server;
//↓実行結果

// “MIBDIRS” => “C:/hoge/php/extras/mibs”
// “MYSQL_HOME” => “\xampp\mysql\bin”
// “OPENSSL_CONF” => “C:/hoge/apache/bin/openssl.cnf”
// “PHP_PEAR_SYSCONF_DIR” => “\xampp\php”
// “PHPRC” => “\xampp\php”
// “TMP” => “\xampp\tmp”
// “HTTP_HOST” => “hoge.ww

元記事を表示

Laravelの認証でwebとapiの両方を使う

LaravelでのAPIの認証は、こちをご参照ください。
→ [LaravelでのJWT認証](https://qiita.com/nozaki-sankosc/items/7ed320d6549f5f92b9b9)

Laravelの認証は、`config/auth.php`にのguardにて設定しますが、defaultをapiに設定するとwebでの認証ができなくなってしまいます。

“`php:config/auth.php
‘defaults’ => [
‘guard’ => ‘api’, // ← ここです。
‘passwords’ => ‘users’,
],
“`
一つのLaravelプロジェクトで、webとapiの両方を実装したいときの対応になります。

Laravelでは`auth()`や、`Auth::login()`などで使用する認証は、guardのデフォルトの方となるようです。
デフォルト以外のものを使うときは、`Auth::guard(‘[guard名]’)->login()`とguardを指定して使用します。

元記事を表示

CakePHPのCounterCacheで関連件数を自動カウント

CakePHP には、紐づく別テーブルの件数が変わるとカウンター用カラムを自動的に更新してくれる、「CounterCache」というビヘイビアがあります。

ドキュメントにある利用例です。

> たとえば、記事のリストを表示するときに、記事のコメントの数を表示することができます。 または、ユーザーを表示するときに、彼女が持っている友人/フォロワーの数を表示することもできます。 CounterCache ビヘイビアーは、これらの状況を想定しています。
> https://book.cakephp.org/4/ja/orm/behaviors/counter-cache.html

このビヘイビアを使ってみようと思います。

# テーブルを作成

まず、テーブルを作成します。
以下のようなテーブル構成とし、記事テーブルがコメント数とタグ数のカラムを持つものとします。

* 記事:コメント = 1:N (hasMany/belongsTo)
* 記事:タグ = N:N (belongsToMany)

“`sql
/* PostgreSQL */


— 記事

CREATE

元記事を表示

Laravelのコレクションでユーザー(グループ)ごとに最新のメッセージを取得

うちでLaravelで質問回答アプリを実装しています。
対話者のメッセージボックスを作りたい、要件をまとめました:スクリーンショット 2020-06-02 6.44.49.png

ログイン中のユーザーはuser_meとし、他のユーザーごとに一番新しいメッセージを提示するメッセージリストを作りたいです。
そこでクリックしたら、そのユーザーとのメッセージモダルに飛ぶ。
ユーザー名は相手の名前、メッセージは対話中の一番新しいメッセージ(自分からメッセージのも含む)

SQLよりLaravelのコレクションはもっと使いやすいと思い、以下で案を。
まずuser_meと関わる全てのメッセージを時間順に並べて取得、

次に対話両方をグループとし、一番新しいメッセージだけ、リストにプッシュする。
リストに登録済のグループのメッセ

元記事を表示

docker上のphpコンテナでcomposer installしたら、メモリ不足で落ちた話

## はじめに
docker上でlaravelの開発していて、必要なライブラリをcomposerでインストールしようとしたら下記のエラーが出て詰まった、、、:sweat_smile:

エラーメッセージ

“`
Using version ^4.3 for laravel/socialite
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer.phar/src/Composer/DependencyResolver/Solver.php on line 223

“`

##

元記事を表示

[PHP]引数で受け取った無名関数(クロージャ)の結果の型を指定する方法

引数で受け取った無名関数の返り値が型チェックでエラーになるようにするというのが目的。

# お題

phpの引数は型指定できますが、受け取った無名関数の返り値の指定はできません。
例えば下記は配列のフィルタを行うクラスの実装例です。

“`php
values as $key => $value) {
if ($filter($value)) {
$filteredValue[] = $value;
}
}
return $filteredValue;
}
}

$arrayObj = new ArrayObj();

// a

元記事を表示

PHP7.0 × Zend Framework1でWebアプリケーションを作る

#1.PHPのインストール -XAMPP
XAMPP = ザンプ
>X:クロスプラットフォーム
A:Apatch
M:MariaDB/MySQL
P:PHP
P:Perl

PHPを用いたWebアプリケーションに必要なソフトウェア群を一度にインストールできるパッケージ。
[公式サイト](https://www.apachefriends.org/jp/index.html)からダウンロード、インストール。
(Nextをポチポチしていれば問題ないはず)

完了したらXAMPPのコントロールパネルが表示される。ここで各ソフトウェアの起動・終了を行う。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248316/78df2559-281d-3454-f072-28a234dfa111.png)

**赤いエラーが出ている場合**
使用するポート番号が既に使用されている可能性。
https://norakura-jyoko.com/xampp-local-setup を参照

#2.Zend

元記事を表示

phpredisインストール時に、PHPの設定でひさしぶりにハマったのでメモ

“`
PHP Warning: PHP Startup: Unable to load dynamic library ‘/usr/local/src/phpredis/modules/redis.so’ (tried: /usr/local/src/phpredis/modules/redis.so (/usr/local/src/phpredis/modules/redis.so: undefined symbol: php_json_decode_ex), /usr/lib64/php/modules//usr/local/src/phpredis/modules/redis.so.so (/usr/lib64/php/modules//usr/local/src/phpredis/modules/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
“`

こんなエラーを見かけたら、ポイントは `php_json_decode_ex`

元記事を表示

symphonyを覚えようとしたら英語だらけだった

# はじめに
現場が2020年5月末で終りを迎えた。コロナ影響による無業期間の始まりである。ほんとうに仕事がない期間は初めてなのでちょっとドキドキするが向こう1年ほどの生活資金はある。そしていままでの人間関係を総動員して、広告系のWeb現場にいる友達(元同僚)からphpの案件にチャレンジしてみないか、と面談オファーが来た(持つべきものは酒を酌み交わした友である)。で、使われてるフレームワークがsymphonyって言われたんだけど、、、
おおん?日本語の資料がめっちゃすくねぇー!

# また英語なの!?
文句言ってるヒマはねぇや、やるしかねぇぇぇ
https://www.udemy.com/share/101WEaAkQadFdURHg=/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94562/c7c299e2-0015-16ed-9c9b-b8ad2965bf7e.png)

# Symfony
## インストール
“`terminal(ver.4.2をインストールする場合)
>

元記事を表示

【Laravel】php artisan migrateエラーへの対応 : 1 PDOException::(“SQLSTATE[HY000] [2002] Connection refused”) /Applications/MAMP/htdocs/task_test/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

#【Laravel】php artisan migrateエラーへの対応 : 1 PDOException::(“SQLSTATE[HY000] [2002] Connection refused”) /Applications/MAMP/htdocs/task_test/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

上記エラーを対応した際の内容を記録します.

## 目次
* [動作環境](#動作環境)
* [解決法](#解決法)
* [調べたこと](#調べたこと)
* [エラー原因の考察](#エラー原因の考察)

—————————————
## 動作環境
`OS : macOS Mojave 10.14.6`
`MAMP : 5.7`
`MySQL : 5.7.26`
`PHP : 7.2.31`
`laravel : v6.18.16`

## 解決法

先に解決した方法を記載します.
.envファ

元記事を表示

OTHERカテゴリの最新記事