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

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

laravelで作成したポートフォリオをherokuでデプロイした

ポートフォリオをherokuでデプロイするために、
まず任意のフォルダを作成→heroku

その後、アップロードしたいherokuファイルを
git clone (url)
でファイルに取り込む。
その際cloneしたファイル以外は削除する。

その後、app/Providers/AppServiceProvider.php
public function boot()
{

\Schema::defaultStringLength(191);

if (\App::environment(‘production’)) {
\URL::forceScheme(‘https’);
}
}

を記述。

次に、
heroku create 作成したい名前 –buildpack heroku/php

コマンドを実行herokuに新規ファイル作成。

その後,
git init

heroku git:remote -a heroku上に作成したファイル名

git add .

git commit

元記事を表示

AWSにデプロイしたポートフォリオをHerokuへ移行しようとしたらかなり苦労した

# 1.はじめに
以前僕は転職活動を行った際に、AWSにデプロイしたポートフォリオを作成しました。
自分なりに頑張って作ったアプリなので、折角だから今後も見れる形で残したいと思いました。
しかし、AWSで公開し続けると、課金が発生してしまいます。
僕の場合は、毎月6500円~7500円くらいかかっていました。(もったいない?)
そこで、無料で利用できるHerokuにデプロイしようと考えました。
AWSからHerokuへの移行作業で、色々と躓いた点があるので、書き残しておきます。

# 2.URL
### ポートフォリオ
##### AWSデプロイURL(近日中に公開停止します)

https://koujigenba.site

↓移行

##### HerokuデプロイURL(起動に少し時間がかかります)

https://koujigenba.herokuapp.com

### GitHub

https://github.com/yuuhei-koutoku/cts-remake

### ポートフォリオ紹介記事

https://qiita.com/Yuhei_K/items

元記事を表示

【Docker】port is already allocatedエラーを解決する方法

これはDockerもよくわかっていない状態だと、非常にハマります。
というか自分はすごいハマりました。

解決する方法は、簡単です。
エラー文の通りに実行するだけです。

### 解決方法
エラー文には、「Portが既に使われているよ」と書いてあるので
使われているポートを調べて、停止して、再度compose up -d をするだけです。

僕は、ひとつひとつポートを停止しては繋げてを繰り返しましたが、もっといい方法があれば教えていただきたいです。

参考記事・これを見ればできます

https://teratail.com/questions/212664

元記事を表示

PHPデフォルト引数値

関数を定義する際にデフォルト値を引数に渡していれば呼び出す際に引数を渡さなくとも渡したデフォルト値が返ってくる。
–>試しにdate()関数から得られる月、日、曜日を渡そうとしたが、エラー。

PHPマニュアル曰く、デフォルト値は定数式でなければならないとのことだったので今後忘れないように気を付ける。
https://www.php.net/manual/ja/functions.arguments.php#functions.arguments.default

元記事を表示

Slim4で新しく作ったプロジェクトでルーティングが解決しない…?

#問題
Slim4であるプロジェクトから複製した別プロジェクト。
namespaceなどを変更して実行しようとしたが、ルーティング箇所でコントローラが見つからないというエラーが発生。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/3bc079d7-8892-cc91-47e5-16eeb69039bc.png)

ルーティング(index.phpに記述)の指定はこう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/6fa008bb-41b0-f252-83d2-c9e7f0e96698.png)
Controller自身はこんな感じ。(srcディレクトリ直下に配置)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/213142/dd5f1b4e-fa96-80c8

元記事を表示

Laravelの謎すぎたエラー「500エラーなのにステータスコード200」

## 現象
Laravelで、エラーが発生しているのに、HTTPステータスコードは200が帰る。

“`php
abort(500)
“`

でもレスポンス200が帰る。
なんで?nginxの設定???

## 原因と解決

phpファイルの頭に空白行があった・・・

“`php

元記事を表示

macOS Monterey バンドルApacheでPHPを使う(PHP-FPM編)

これまでlocalhostで `.php` のファイルを扱っていたけれど、Montereyにしたらブラウザからアクセスしたときにソースが表示されてしまうようになってしまった、という人向けです。

おそらく一番楽であろう、標準で入っているApache + php-fpmを使う方法をご紹介。mod_phpは使いません。

##バンドルされなくなったPHPをインストール
Homebrewからインストールする場合。

“`sh
brew install php
“`
もしHomebrew未導入であれば、https://brew.sh に書いてあるようにして導入してから上記コマンドたたいてください。

“`sh
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

なおFPM使うには `–enable-fpm` を付けてビルドせよと書いてありますが、普通に `brew install php` すればついてきます。

##PHP-FPM

元記事を表示

確認用ログ

“`php
takumikondo@kondoutakuminoMacBook-Pro lara-d % git push origin HEAD
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 411 bytes | 411.00 KiB/s, done.
Total 4 (delta 2), reused 1 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To https://github.com/quest-academia/laravel-posts-training.git

元記事を表示

高機能クレヨンしんちゃん(Vue・PHP)

### Respect for

https://qiita.com/noppefoxwolf/items/b4376392d98cea2446dd

小一時間暇だったので自動ルビ振り機能とかを搭載したクレしんタイトルコールジェネレーターを作ってみたゾ

**https://tools.ic731.net/kureshin/**

## 使い方
アクセスしてテキストボックスに上段と下段に表示したいテキストを入力するゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/fae09185-5d1a-d2b1-1e8a-79babe5bd245.png)
あとは自動でルビ振りされたテキストがタイトルコール風に表示されるゾ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513165/722c2209-b3b2-527e-fc8b-88a25cd194af.png)

### 仕組み
もう

元記事を表示

8:インデントの除去, NULL, 配列

インデントの除去

前回(その7)のヒアドキュメントでは、終了文字列のインデント位置によって、先頭部分の空白が除去される。

下の例だと「$msg」の真下にある空白部分は全て除去される。

“`
$msg = << “Let’s start, everyone!!”
EOD;
“`

よって、終了文字列よりもインデントが少ない行は不可。

“`

$msg = << “Let’s start, everyone!!”
EOD;
“`

上の例では(不正なインデント階層(少なくとも2個のインデントが必要))のようなエラーとなる。

ヌル(null)

ヌル型は、ある変数が値を持た

元記事を表示

入力フォームのinputの値が、配列形式の場合にカンマ区切りでDB登録。

#はじめに
実務で、複数選択可能な入力フォームの値をDBにカンマ区切りで登録する場面があったので自分用のメモとして残します。

入力フォームで業種タイプが医療、ITサービス、ペット販売という風に複数選択されており
name属性がindustryで、inputのvalueが配列形式で下記のようになっている場合

“`php
all();

//現状、$request->get(‘industry’)の値は、array(0 => 1, 1 => 2, 2 => 3)という状態
if (!empty($request->get(‘industry’))) {
$str_industry = implode(“,”, $params[‘indsutry’]); //配列の中の各値を、一つずつカンマ区切りに修正する。
$params[‘indsutry’] = $str_industry; //登録対象の値を、カンマ区切りにした値に書き換える。
} else {
$params[‘indsutry’] = ”;
}

元記事を表示

複数画像アップロード/アップロード先の指定(PHP)

# はじめに
複数画像を指定のディレクトリにアップロードしたいシーンがあったので、忘れないようにここにまとめます。

# 実装

“`html:index.html



“`

“`php:upload.php
foreach ($_FILES[“files”][“error”] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES[“files”][“tmp_name”][$key];
$name = basename($_FILES[“files”][“name”][$key]);
$upload_path = “./

元記事を表示

isDirtyメソッドを使用して、変更されている項目があれば更新保存処理を行う。

入力フォームから入力された値と、取得したモデルの値で、差異がある項目だけ保存する処理を行いたい場合は、LaravelのisDirtyメソッドという便利なものがある。

参考ドキュメント
https://readouble.com/laravel/8.x/ja/eloquent.html

参考ソースコード

“`php
all(); //入力フォームで入力された値を$paramsという変数に格納。

$update_target = Target::find($request->target->id); //更新対象のオブジェクトをユニークなidで取得

foreach ($params as $key => $value) {
$update_target->$key = $value; //更新対象のオブジェクトの各フィールドの値を、入力された値に書き換えようとしている。
}

if ($update_target->isDirty()) {
$update_target->save(); //更新対象のオ

元記事を表示

PHP【クラス入門】フレームワーク学ぶ前に見ると良い動画集

# フレームワークを学ぶ前に見ると良い動画として用意

:::note info
PHPのクラス「クラス・アクセス修飾子・継承・静的」の導入部分を収録しております。
「 全て理解 」ではなく「 フレームワークに登場する知らない書き方に慣れる 」がポイントです。
:::

### 自己紹介
ジーズアカデミー学校長(デジタルハリウッドでも教鞭をとる)山崎と申します。
[ジーズアカデミー](https://gsacademy.jp/mentor/)は開校6年目のデジタルハリウッドが運営する「起業家エンジニア養成スクール(卒業生が6年で69社起業し総資金調達額80億5,620万円と卒業生が頑張っている学校)」です。
**なぜ動画を公開したのか?**
今回、私の授業(初級者向け)をYoutube配信したものをまとめました。
画質は「コロナ」が始まった当初に自宅で初めて動画撮影するようになったので、あまり画質等は最高とはいえませんが、初学者には入りやすい内容なのではと思います(自分でいうのもあれですが・・・)。
全国のプログラミング初学者・初級者の皆さんの底上げになればと思い公開させていただきま

元記事を表示

macにPHP8.1をインストールする。

おおお!!めっちゃ構文エラー出してますやん
なんで、みんな気づかないんだろう。

**「いや、自分のPHPのversionが古いだけじゃん」**

# アップデート方法

## 結論

まずインストールしてリンクさせます。

““
$ brew install php@8.1 && brew link –force php@8.1
““

しかし、これではバージョンは変わりません。

““
$php -v
PHP 8.0.15 (cli) (built: Jan 21 2022 04:47:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.15, Copyright (c) Zend Technologies
with Zend OPcache v8.0.15, Copyright (c), by Zend Technologies
““

そこでパスを通します。

““
$ echo ‘export PATH=”/usr/local/opt/php@8.1/bin:$PATH”‘ >> ~/

元記事を表示

PHP、データベースにうまく接続できなかった事例

今回はPHPのソースコードからデータベースに接続するときに簡単なミスで生じる内容を報告します。

入力してもエラー表示がされずに、データベースに反映しないという内容です。

PHP version 7.4
10.4.22-MariaDB(phpmyAdimin)を使用。

(ケース)データベースに接続文字列

“`
$dsn = “mysql:dbname = php_work;host = localhost;charset = utf8″;
// エラー表示はされないが、接続はされない
“`
【原因】イコール(=)の間にスペースが入っている。
この部分を見やすくしたいがために、改行やスペースを入れてしまうと結果的に、接続が出来なくなる

正しくは、
__mysql:dbname=test;host=localhost;charset=utf8mb4(スペースを入れない)__

“`
$dsn =”mysql:dbname=test;host=localhost;charset=utf8mb4”;
// すべてを隙間を入れずに入力すること。
“`

簡単なところだが、意外に

元記事を表示

PHP上から順に実行されることを意識する。

rand()関数を使ってスコアに応じてメッセージを変更するプログラムを書こうとしたが、以下のようにrand()関数をwhile分の外(上)に出していたため、while文で10回繰り返す処理に全て同じスコアが入ってしまい意図しない結果となった。

“`PHP
60){
echo ‘合格!’;
}else{
echo ‘不合格。’;
}
echo “
“;
$try++;
}
?>
“`

while文の処理1回ごとに異なるスコアを出せるようにrand()関数をwhile文の中にセット。

“`PHP

元記事を表示

Docker環境でphp artisan tinkerが通らない

php artisan tinkerが通らない!他のartisanコマンドは通るのに。。。

## エラー
“`bash
Writing to /var/www/.config/psysh is not allowed.
“`

原因はホームディレクトリ「/var/www」の権限不足。
root権限でしか触ることができないが、別のユーザーを使っていたので権限エラーがでていた。

# やったこと>権限を変更

“`bash
$ sudo chmod -R 777 /var/www/
“`

sudoコマンドが入っておらずエラー。。
find . -name sudo
見つからず。

# 解決法
ホームディレクトリの所有者を変更する。
docker-fileに以下追加。再ビルドで通った
ちなみに-Rオプションは再帰的に権限を所有者を書き換える

“`docker
ARG HOME_DIR=’/var/www’
RUN mkdir -p $HOME_DIR
RUN chown -R $UID:$GID $HOME_DIR
“`

# 参考
[dockerでHOMEディレクトリを

元記事を表示

Laravelでの2段階認証

#はじめに#
セキュリティ面での不安からポートフォリオの管理者ログインに2段階認証をつけようと思ってやってみたところ、結構詰まったので備忘録として残します。記事の内容がセキュリティ的に明らかにまずかったりした場合は、ご指摘頂けると幸いです。

#記事の対象者#
アプリにLaravelを使用していて、管理者アカウントにワンタイムパスワードによる2段階認証を検討している方。

#環境#
Laravel 8.76.2
Google2FA-Laravel v2.0.1 リンクは[こちら](https://github.com/antonioribeiro/google2fa-laravel)

#参考#
https://github.com/antonioribeiro/google2fa-laravel

#Tinkerで管理者インスタンスを作成・鍵発行#
LaravelのコマンドラインツールであるTinkerを用いて、2段階認証を付与するインスタンスを作成します。インスタンス作成時に、Googleの認証アプリであるAuthenticatorに入力するための16桁の鍵を発行します。この鍵は後

元記事を表示

【PHP】「Parse error: syntax error, unexpected end of file, expecting “,” or “;” in~」というエラー発生

## 今回のコード
“`php:index.php
解析エラー:構文エラー、予期しないファイルの終わり、「、」または「;」が必要です

上記のようなエラーが発生しました。

## 解決方法
翻訳を見れば誰でも分かることですが、終わりの“` ; “`が抜けているためのエラーなのでセミコロンを追加します。

“`php:index.php

元記事を表示

OTHERカテゴリの最新記事