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

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

Laravel https環境下でCSSが反映されない

# 目的

– Laravelでオリジナルのcssファイルを作成しビューファイルに反映しようとしても一切されない問題を解決した話をまとめる

# 原因

– Laravelアプリが可動しているWebサーバがHTTPS化されていたためcssファイルの読み込み方法が異なるため読み込まれなかった。

# 原因と解決方法

– 下記の様に`asset()`で記載するとhttps環境下だとCSSファイルを読み込むことができない。

“`html “`
– 下記の様に`secure_asset()`を用いることによりhttps環境下でもセキュアを保ったままCSSを読み込むことができる。

“`html

元記事を表示

Laravel5.5でメール送信ができないよ?

さくらインターネットのレンタルサーバーで、稼働中の Laravel5.5 で作成したサービスが特定のページで突如エラー。
エラーログをたどっていくと、どうやらメール関連でエラーが…

“`
Trying to access array offset on value of type null in /project/vendor/egulias/email-validator/EmailValidator/Parser/Parser.php
“`

だがどうして突然・・・気づいたらレンタルサーバーのPHPが7.4に上がってた。
これが原因か。
~~じゃぁPHPを7.3固定で!~~

egulias/email-validator のバージョンが 2.1.3 だったが composer update で 2.1.20 になった事で
解決できた。

こんな状況に遭遇する人少なそうだけど…

元記事を表示

IISでCakePHP3を動かしたら真っ白なページが表示された場合の解決策

# 0.はじめに
色々なサイトを見ながらCakePHP3のチュートリアルを進めていた際に、
**localhost/cms**と入力したのに**真っ白なページが表示**されてしまった。
しかも、そもそも**localhost/phpinfo.php**すらも**真っ白**だった。

しかし、原因を調べようにもCakePHP3を使うにあたってIISを用いることが珍しいのか、
なかなか自分の現象を解決する方法が書いてあるサイトが見つからなかった。

結論から言うと**IISの設定不足**だったのだが、見つけるのに苦労したのでここに記しておく。
ただし、**IISでCakePHP3を動かす方法全体を書いているわけではないので注意**。
(後ほどリンクを貼っておくかも。もしくは自分でまとめるか)
# 1.ハンドラーマッピング
まず**phpinfo.php**に関しては**ハンドラーマッピングの設定**が漏れていた。
詳しくは調べていないが、**.phpのモジュールマッピング**を設定に組み込まないといけないらしい。
以下に簡単に設定方法を記載する。上の言葉だけで解決した人は作業に進んでもらっ

元記事を表示

Laravel で array 型のリクエストパラメータのバリデーション

![PHP-7.2](https://img.shields.io/badge/PHP-7.2-brightgreen) ![Laravel-6.x](https://img.shields.io/badge/Laravel-6.x-brightgreen)

Laravel で array 型として扱われるようなリクエストパラメータのバリデーションの記述に関するメモです。

## 実装

下記の例の **Request Parameter** にはリクエストパラメータを `$request->all()` で取得したときに得られる array を記述します。
**Validation** にはとバリデーションルールを表す array を記述します。

それぞれの変数 `$data` と `$rules` に対して `Validator::validate($data, $rules)` を Tinker 等で実行すればバリデーションが効いているか試すことができます。

### 例1. key を省略した array

– Request Parameter

“`php
$data

元記事を表示

【laravel+mysql】新規でアプリケーションを立上げ、初めてのphp artisan migrateで詰まった件

# どんな問題?
初めてPHP言語を使用して、Webアプリケーションを作成するためにlaravelとmysqlで開発環境を整え、新規作成したテーブルをmigrateした際にエラーが発生し、正常にテーブルが作成できない。

# エラーの内容
ターミナルで $ php artisan migrateコマンドを入力したところ、以下のようなエラーが発生しました。
6行目の通り、1050 Table ‘users’ already exists…とあるように「既にuserテーブルは存在あるよ」ということです。

“`zsh:ターミナル
$ php artisan migrate
Migrating: 2014_10_12_000000_create_users_table

Illuminate\Database\QueryException

SQLSTATE[42S01]: Base table or view already exists: 1050 Table ‘users’ already exists (SQL: create table `users` (`id`

元記事を表示

【PHP】フラッシュメッセージの実装

PHPについて学習内容を備忘録としてまとめます。
今回はフラッシュメッセージをポートフォリオに実装したので、実装方法を記録します。

#フラッシュメッセージ実装
全体の流れとしては空のフォームがあった場合に該当のエラーメッセージを格納し、
ログイン画面でエラーメッセージを表示するという流れになっております。

まずフォームが空かを確認し処理を行います。
これで該当のフォームが空のとき、エラーメッセージに値を格納することができます。

“`php

//login_check.php(ログイン過程のファイルです)

if(empty($staff_code)){
$error_messages[‘code’] = “コードを入力してください”;
}

if(empty($staff_pass)) {
$error_messages[‘pass’] = “パスワードを入力してください”;
}

“`
余談にはなりますが、`md5`などで値をハッシュ化するとフォームは空でも値が入ってしまい`empty`で処理できなくなります。

“`php

//$staff_passは空

元記事を表示

JetPack のサイトアクセラレーター有効時にフルサイズ画像が縮小されてしまう問題への対処法

## 問題

WordPress で JetPack の サイトアクセラレーターを有効化静的ファイルの読み込みをスピードアップ を ON にしていると、投稿内で読み込まれる画像の幅が、画像サイズ: フルサイズ を指定していても、1024px に縮小されたものになってしまいます。

## 原因

JetPack は `global $content_width` を参照して、画像の最大幅を決定しているため[^width]。

[^width]: したがって、テーマ内で `global $content_width` が指定されている場合は、1024px 以外の幅になる場合もあります。

## 解消方法

functions.php 等に以下の内容を追記し `$global $content_width` を上書きします[^child-theme]。

[^child-theme]: 子テーマやプラグイン内での指定は未検証です。`add_action( ‘after_setup_theme’, $function_to_add

元記事を表示

わかりやすい変数名の付け方

#プログラミング勉強日記
2020年9月6日
わかりやすいコードを書くために必要不可欠であるわかりやすい変数名の付け方をまとめる。変数名をわかりやすくすることで、読みやすく、コードの間違いにも気づきやすくなる。

#PHPの変数の書き方
– PHPの場合は変数は`$`から始まる
– そのあとは半角英数字とアンダーバー(`_`)が使用することができる。($のあとにすぐ数字を使うことはできない)

以上のルールに違反すると、実行時にエラーとなってしまう。

また、ルール(命令規則)ではないが以下の決まりもある。

– 大文字と小文字は区別される。
– 変数名を全て大文字にすることもできるが、特別な意味を持つ変数を全て大文字にすることがあるので、全て大文字にはしないほうがいい。

ルールではないが、複数単語になる場合は
単語と単語の間をアンダーバー(`_`)で区切るか、2語目以降の先頭の文字を大文字にする。

☆ポイント
 複数の単語を使うときはどちら(先頭を大文字にするのか`_`を使うのか)を決めておく。

“`php:複数単

元記事を表示

How to make delete button in laravel (File Upload Site #3)

1. ルートを作成

“`php:web.php
Route::delete(‘files/{id}’, ‘FilesController@destroy’)->name(‘deletefile’);
“`
2. View ファイルにフォームを追加する

“`php:home.blade.php

Delete

“`
@csrf はクロスサイトリクエストフォージェリからの防蟻です。

3.コントローラーにfunction追加

“`php:filescontroller.php
public function destroy($id)
{
$

元記事を表示

Docker × Laravel コードを自動整形するコンテナを構築する

## PHP CS Fixer とは

[PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) (PHP Coding Standards Fixer) とは、その名の通りPHPのコードをコーディング規約に沿うよう修正してくれるツールです。

## 前提

– [最強のLaravel開発環境をDockerを使って構築する【新編集版】](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4)
– https://github.com/ucan-lab/docker-laravel

当記事は上記の記事の補足になる記事です。

## docker-compose.ymlの編集

“`yml:docker-compose.yml
services:
cs:
image: herloct/php-cs-fixer
volumes:
– ./backend:/project
“`

`services.cs` を追記します。

## コマンド

元記事を表示

よくわかるPHPの教科書でリンク先のページが真っ白になる【500 (Internal Server Error)】の解決法

よくわかるPHPの教科書で学習中にリンク先のページが真っ白になるというエラーを解決する方法をサクッとまとめます。
(初学者のエラー解決方の一例です。低レベルですがご了承ください)

今回は「削除機能をつける」の段階でのエラーでしたが全般的に起こりうるエラーだと思います(?)

【エラー詳細】
![スクリーンショット 2020-09-06 10.45.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/650911/84366b2c-910e-8855-33ea-eda1a7ffa98b.png)
削除する為のコードを書いて削除ボタンに設定したリンクにアクセスすると、真っ白になりました。
リンク先を見てみると

delete.php=?id=18

となっているので、削除したい投稿にはアクセスできているみたいです。

【解決手順】
なにが起こっているのかわからなかったので、デベロッパーツールにて確認します
![スクリーンショット 2020-09-06 10.45.53.png](https://qiit

元記事を表示

PHPでのオブジェクト型データへのアクセス

型の種類で`object`というものがあります。配列のような使い方をするようですが、その要素へのアクセスの仕方です。

“`example.php
$a = $object->[‘property’];
“`
変数`$a`に`$object`の`property`プロパティの値を格納するという意味になります。

元記事を表示

配列に大きい添字を指定して値を代入したときのサイズ

## 動機
 Webアプリを開発する際、ユーザーID(整数)をインデックスにした配列を作ったときに、無駄に大きい配列になるのでは??

## 結論
 PHPでは配列、JavaScriptでは`Map`を使用すると、サイズが無駄に大きくならない。

### PHPの場合
 大きい添字を指定しても、問題はなさそう。

“`php
$array = [];
$array[100] = ‘hoge’;

echo count($array); // 1
“`

### JavaScriptの場合
 大きい添字を指定すると、あいているところに`empty`が挿入された配列になった。

“`javascript
let array = [];
array[100] = ‘hoge’;

console.log(array); // [empty x 100, “hoge”]
console.log(array.length); // 101
“`
`Map`を使用すると、PHPの配列と似たような振る舞いになった。

“`javascript
let map =

元記事を表示

お手元のPHPファイルをphp-cs-fixerでチェックする

## コマンド

“`shell-session
# 自動整形しない(差分表示のみ)
$ docker run -v $(pwd):/project herloct/php-cs-fixer fix –dry-run -v –diff –diff-format udiff .

# 自動整形する
$ docker run -v $(pwd):/project herloct/php-cs-fixer fix -v –diff –diff-format udiff .
“`

## 参考

– [Laravel PHP-CS-Fixer のルール設定](https://qiita.com/ucan-lab/items/7d4180462347a42009d5)
– [https://hub.docker.com/r/herloct/php-cs-fixer](https://hub.docker.com/r/herloct/php-cs-fixer)

元記事を表示

Laravel6 ユーザと管理者の認証を分けて管理者の認証情報のみ名前とパスワードだけにする

# 目的

– ユーザと管理者とで認証を分ける方法をまとめる。

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| PC | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 6.18.35 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaeecae69d63

元記事を表示

Humhubのカスタムモジュールの作り方(公式ページのとある解釈)(2)

#はじめに
 前回は、Humhubのカスタムモジュールの作り方について、モジュールの型枠といえるような部分について、公式ページについてのいち解釈を記述した。今回は、カスタムモジュールのeventsの記述についての解釈を、おじさんは語りたい。(おじさんは、「亜人ちゃんは語りたい」というアニメを見たりすると、そのオマージュとしてこんな言葉遣いをしてみたくなるのだ)。

 カスタムモジュールの利用にあたって、「このモジュールは、この操作のときにこんな風にでてきてほしい」という状態条件があることだろう。この状態条件、モジュール活性化の条件を記載することがeventsの記述であると言ったら、伝わるだろうか?コールバックのトリガーを書く、という表現があうだろうか?

今回の解釈ターゲットは、こちらの公式ページだ。
https://docs.humhub.org/docs/develop/modules-event-handler/

 前回内容と重複する部分もあるが、eventsの記述について公式ページの説明をなぞりつつ、後半、具体的にcustom_pageモジュールのメニュー表示の仕組みについて

元記事を表示

CakePHPのAuthComponentを使ってパスワードを使わず任意のデータでログインさせる方法

## 前書き
パスワードを使わずにAuthComponentを使ったログインを実装したのでそのメモ書き
1つのテーブルだけじゃなくて複数のテーブルのデータからログインできる様に実装しています。

イメージとして
荷物の再配達のサイトとして
電話番号と再配達番号の二つで再配達依頼ができる様にするイメージです。

## 開発環境
PHP 3.6
CakePHP 3.8

>※注意点
>AuthComponent は CakePHP4.0.0以降では非推奨になり、authorizationとauthenticationプラグインに置き換えられます。
> 引用元:CakePHP公式(AuthComponent)

## 最初に行き着く答え

“`AppController.php
class AppController extends Controller
{

public function initiali

元記事を表示

PHP 製システム・設計思想面の,システムアーキテクト的な,ふわっとした話。模範解答はない領域だと思うけど,ベタープラクティスを披露してみる

# 概要

この五年間ほど,オープン系システムの開発に携わり,PHP を使う機会がありました。

自分でコードをゴリゴリ書くことは少ない(社外のビジネスパートナーさんへ発注)のですが,他者に書かれたコードを眺めるうちに,おぼろげながら,**PHP 製システムの「レベル」感って,こんなものかなぁ**という,個人的な線引きができつつあります。

また,入れ替わりの激しいフレームワーク情勢を見物していて,**「ブレてはならないフレームワーク活用指針」**についても,自分なりのアイデアが煮詰まってきたので,発展途上かも知れないけれど,そろそろ記事としてシェアしてみようと思いました。

技術面うんぬんよりは,**システムアーキテクト的な視点で,PHP 製システム・設計思想面のトピック**に近いかも知れないです。

ゆるっ&ふわっとした,とりとめのないトピックを,一つの記事にするという,巧みさが求められる作文になりそうです(冷や汗)。

# PHP 製システムの「レベル」感

昔ながらの,ザ・レガシー なPHP から,今風イケイケ PHP まで。

以下のテーブルで,すべてのパターンを網羅している

元記事を表示

【PHP】foreach、三項演算子

PHPについて学習内容を備忘録としてまとめます。

#foreach
配列専門のループ処理。
配列の要素が入っている分だけ繰り返し処理を行います。

例えば、実行例としては下記のようになります。

“`php

“;
}
?>

#実行結果
test1
test2
test3
“`
このように3つの要素を繰り返し処理しました。

##連想配列
連想配列でも同様の処理をすることが可能であり、
下記のように動作します。

“`php

“test01” ,”test2” => “test02”,” test3” => “test03”);
foreach($test as $key => $value){
print $value . ”は” . $key . “です
”;
}
?>

#実行結果
test1はtest01です
test2はte

元記事を表示

[タスク②の解説記事]未経験からエンジニアがキャリア初期に、任されるあろう3つのタスクを出題してみる

## 前回の記事の解説

出題したタスクはこちら

https://qiita.com/morry_48/items/7dea1145d2db8bb7f570

## タスク②画面上に表示文言を追加する
〜DBに保存されたデータを取得し、画面上に表示しよう〜

タスクの見通しとしては、
1.表示箇所の特定
2.表示するデータがデータベースから取得されているか確かめる(ない場合は取得する)
3.上記のデータを対象箇所に表示する
といった手順になる。

タスク①の要領でまずは表示すべき箇所を見つけることから始める。
①で使用したlist.twigを少しスクロールするとカートに入れるボタンの箇所があるのでそのすぐ上が表示箇所となる。

次にlist.twigの商品情報を表示している箇所を見るとProduct.hogehogeのようにして表示していることがわかる。(nameを表示している箇所はProduct.name)
Productの定義箇所を見ると145行目あたりに
{% for Product in pagination %}
とあることからpaginagionという変数(配列)を展開

元記事を表示

OTHERカテゴリの最新記事