Vagrant + Amazon Linux2 + Laravel 9 + Apache 2.4の環境構築 1日目
# 1. 初めに
初めまして、piroです。
初投稿の記事で、色々と足らなかったり見づらいことあるかもしれませんが、良ければ最後まで見てください!!!# 2.概要
「VagrantでAmazon Linux2 PHP 8.1 + Laravel 9 + Apache 2.4 + Mysql(おまけ)」を環境構築する内容になります。
2日間に分けて投稿するのでよろしくお願いします。1日目 : Vagrant設定、PHPインストール・設定、Laravel インストール・設定 **←ここ**
2日目 : Apache インストール・設定、Mysql インストール・設定:::note info
– 環境構築した際の最新バージョン
– Windows 10 の環境構築になります。
– コマンド実行は「Git Bash」を使用
:::1日目は以下のサイト参考にしております。
[参考URL]
https://qiita.com/ntm718/items/b06188c459fe70a3fe87
https://dev.classmethod.jp/articles/ec2-ph
DockerでLAMP環境(Amazon Linux 2/Apache/MySQL/PHP8.1(Laravel9))を構築する手順 ①作成する環境の確認(全8回)
# はじめに
かくかくしかじかで、Docker で Amazon Linux 2 ベースの LAMP 環境を構築する機会がありましたので、手順についてアウトプットします。
![スクリーンショット 2022-11-30 23.31.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527226/930bcd24-38e9-316e-bebd-cef83aea5924.png)
## 記事の目的
– 手順の詳細を書いていくことで、似たような環境を構築する方の一助となれば幸いです。
– 作成する過程では、つまずく箇所が山ほど出てきましたが、調べながら進んでいくことで、色々な学びを得ましたので、なるべく記事に落とし込めたらと思います。
– さらに記事として書き出す上で、よくわかっていないことに気づいた点を調べながら補足することで、インプットの機会にもしたいというのが目的です。## 投稿内容(全 8 回)
全 8 回に分けて、投稿します。
**① 作成する環境の確認**
② Apache の
SHIPPAY✕GAICHU
# ミックスソース
上司に詰められたボックのような世界では
外注がそれぞれ出会った誰かと寄り添い合ってる
そこに紛れ込んだ僕らは営業職みたいに
優良企業のフリしながら 微笑み浮かべる幸せの発注依頼の上
文字通り絵に描いたうわべの裏
モニタを囲み手を合わすその時さえ
ありのままでは居られないままコピペコードだらけ 継ぎ接ぎだらけの code, you know?
デバッグしても無くならない
タイポがコードに挟まったまま
不安だらけ 成り行き任せの schedule, and I know
仮初めまみれの進捗だけど
ここに僕が居て 外注が居る
この真実だけでもう 胃が痛んでゆく化けの皮剥がれた一回の進捗会議みたいに
幹部から一瞬で弾かれてしまう そんな時こそ
突貫工事で良かったら僕にやらせて
共に罵倒され 揺られ 踏まれても
帰れない夜みたいになるからAPIの呼び出し場所が初期処理か関数の中か
それだけの違い
許されないほどにクソイなこのコードを
等しく僕が直せますように時に冷たくて 騒がしい会議室の向こう you know?
笑顔の一つも見つからない
怒号に満ちた日
与えられた配列の中でレコード登録されていないものを高速に取得する方法
## はじめに
今年もアドベントカレンダーはじまりました!
この記事はNE Advent Calendar 2022のカレンダー2枚目1日目の記事です。
[NE株式会社](https://www.ne-inc.jp/)のエンジニアが自分の興味あるテーマについて自由に書いていきます。
毎年一緒に参加して盛り上げてくれる皆さんに感謝です :clap:
初の2枚目突入にテンション上がっております。## 概要
CSVで入力されたコードの配列があったとする。
| code | name |
|:-:|:-:|
|test1|テスト1|
|test2|テスト2|
|test3|テスト3|
|hoge|ほげ|DBのテーブル(table_name: codes)
| code | name |
|:-:|:-:|
|test1|テスト1|
|test2|テスト2|
|test3|テスト3|テーブルに存在しないものはバリデーションエラーで弾きたい。
この場合はhogeが未登録なのでエラーにしたい。
これを入力値が大量でテーブルレコードも大量にある場合に高速で処理したい。## 案1:
まさかCollectionにwhereしてcontainsしてないか?
## 概要
Collectionの中に同じ値があるかどうかにcontainsを使うと思いますが、こんな使い方してませんか?“`php
$schedules
->where(‘start_time’,$statTime)
->where(‘end_time’,$endTime)
->contains(‘date’,$date)
“`## クロージャ書けるよ
ドキュメントに書いてはある
“`php
$schedules->contains(fn($schedule, $key) =>
$schedule->date === $date && $schedule->start_time === $statTime && $schedule->end_time === $endTime);
“`![](https://storage.googleapis.com/zenn-user-upload/2f172df8da68-20221125.png)
書いてあるのに目がスルーしてました。クロージ書ける事を最近知りました。。。。
処理速度計測してみるとまぁ当然の
HTTPのやりとりに使うデータを扱う、 “HttpFoundation”
[Symfony Component Advent Calendar 2022](https://qiita.com/advent-calendar/2022/symfony-component)の1日目の記事です。
## 最初に
[Symfony](https://symfony.com)はPHPのフレームワークのひとつです。しかし、公式サイトの説明文には> Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.
(SymfonyはPHPコンポーネントのセットで、Webアプリケーションフレームワークで、哲学、そしてコミュニティです。それらがハーモニーを奏でながら動作しています。)と書かれている通り、PHPコンポーネントのセットで、たくさんのコンポーネントを提供しており、それらを組み合わせてひとつのフレームワークとして動作しています。Symfonyのコンポーネントは、Sy
PHP/Laravelとクリーンアーキテクチャでマイクロサービスを作っている話
[アドベンチャーアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/adventure)の1本目の記事です。
# 誰
株式会社アドベンチャー [skyticket](https://skyticket.jp/)品質保証担当です。元サーバーサイドエンジニアで現在はQAマネージャーみたいな仕事をしています。品質保証ちょっとできる人ぜひ弊社へ。
# 背景
skyticketのホテル予約サービスはアーキテクチャが腐っています。いかなる標準にも基づかないオレオレアーキテクチャで、作った人はもう辞めました。今となってはどこに何をどう実装するのが正解なのか誰にも理解できません。最悪です。
最悪なのでどうにかしなければなりません。リファクタリング?いやいや実運用中のシステムのアーキテクチャレベルからのリファクタリングって要するに作り直しですよね。エンジニアリソースが無限に確保できるならもちろん作り直したいですが現実はそんなに甘くはありません。夢を語るのは結構な話ですが我々はまず現実と闘わなくてはなりません。
そこで、全体を一気に作り
WordPress開発をしてみよう
# はじめに
この記事で書くのは、Wordpressでゴリゴリにコーディングする話です。WordPressの機能でできることや、プラグインでできそうなことはわざわざコードを書く必要はないですが、必要に迫られることがあるかもしれません。
たとえば、プラグインAで作ったデータ構造が複雑すぎて、組み合わせて使う予定だったプラグインBでうまく使えないとか。
特定の機能を作りたい場合があるかもしれないですね。## WordPressってなに?
以下抜粋。https://ja.wordpress.org/ より
> WordPress とは
WordPress (ワードプレス) は、ブログから高機能なサイトまで作ることができるオープンソースのソフトウェアです。
世界中で使われる最高の信頼
Web 上の43%のサイトが WordPress を使っています。個人ブログから大規模なニュースサイトまで用途はさまざまです。## WordPressをローカルでちょっと試すときにオススメなアプリ
これを入れればすぐにローカルでサイトが立ち上げられます。
Laravelの基本機能を使ってControllerをリファクタリングしてみた
皆さん、Laravel使いこなしていますかー^ ^
AdventCalendar初投稿となります!
「Laravel Advent Calendar 2022」初日ということで、今回はControllerに書かれた多くのコードをLaravelの基本的な機能を使ってきれいに分けていきたいと思います。
若干題材が無理矢理なところや一部Laravelの機能じゃないやん!という部分もございますが大目にみてください^^;
ではいきましょう!
## 今回出てくるLaravelの機能
– [ルートモデル結合](https://readouble.com/laravel/8.x/ja/routing.html#route-model-binding)
– [認可](https://readouble.com/laravel/8.x/ja/authorization.html)
– [Middleware](https://readouble.com/laravel/8.x/ja/middleware.html)
– [バリデーション](https://readouble.com/larav
DoctrineとEloquent比較大全1: 1レコードを表すクラス(Entity vs Model)
day1の今日はidとtitleという項目を持つbooksテーブルがあったとき、DoctrineとEloquentそれぞれでどう表すのか見てみます。
booksテーブルのmysql用のSQLは [こちら]()## Doctrine
Entityクラスを定義します。
“`php
Attributesで実現するPHP8時代のバリデータ
メリークリスマス! みなさまに愛されたPHP7.x系は2022年11月28日をもってEOLを迎えました :tada:
さて、標記のAttribute(アトリビュート)とは、PHP 8.0で追加された機能です。
“`php
#[ほにゃらら(なんか: “書ける”)]
class クラス{
#[ほにゃらら(ここにも: “書ける”)]
public string $string;
}
“`PHP 7.4の命運が尽きたということは、全人類のPHPランタイム環境でもれなくアトリビュートが使えるようになったに違いありません[要出典]。PHP 8.0がリリースされてからも既に2年が経過していますが、Attributeに関してはみなさんあまり納得できてなさそうというか、どうやって実用すればいいのか持てあまされてるように見えるので、この記事では簡単な実装方法を紹介します。
:::note warn
**注意**
この記事は特定
Lighthouse(GraphQLサーバー)の具体的な利用方法について
この記事はうるる [Advent Calendar 2022](https://qiita.com/advent-calendar/2022/uluru)の1日目の記事です。
# はじめに
今回は自分が担当しているプロジェクトのバックエンドで,
GraphQLサーバーとして利用している,
`Lighthouse` の具体的な利用法について記事を書いていきます!下記のような方にささればいいな〜と思ってます.
* これからLighthouseを導入するための材料を集めている
* Lighthouseを具体的にどう利用しているのか知りたいLighthouse公式ドキュメント
https://lighthouse-php.com/GraphQLの基本は下記で学びました.
https://www.oreilly.co.jp/books/9784873118932/# 各種バージョン
* PHP:8.1
* Laravel:9.0
* lighthouse:5.55
* dd-trace:0.74.0# Lighthouseの導入
下記を参照にどうぞ.
https://li
nuxt(javascript)からlaravelへapiで配列データを渡す
# やりたいこと
nuxt(javascript)からlaravelへapiで配列データを渡したい。# 結論
jsからapiへ渡すときはこうなる“`js:JavaScript
for (let i = 0; i < this.formData.length; i++) { formData.append('files[]', this.formData.files[i]) formData.append('file_infos[' + i + '][title]', this..formData.files[i].title) formData.append('file_infos[' + i + ']目次', this.formData.files[i].outline) } // これで // [0] => array[
- 1. Vagrant + Amazon Linux2 + Laravel 9 + Apache 2.4の環境構築 1日目
- 2. DockerでLAMP環境(Amazon Linux 2/Apache/MySQL/PHP8.1(Laravel9))を構築する手順 ①作成する環境の確認(全8回)
- 3. SHIPPAY✕GAICHU
- 4. 与えられた配列の中でレコード登録されていないものを高速に取得する方法
- 5. まさかCollectionにwhereしてcontainsしてないか?
- 6. HTTPのやりとりに使うデータを扱う、 “HttpFoundation”
- 7. PHP/Laravelとクリーンアーキテクチャでマイクロサービスを作っている話
- 8. WordPress開発をしてみよう
- 9. Laravelの基本機能を使ってControllerをリファクタリングしてみた
- 10. DoctrineとEloquent比較大全1: 1レコードを表すクラス(Entity vs Model)
- 11. Attributesで実現するPHP8時代のバリデータ
- 12. Lighthouse(GraphQLサーバー)の具体的な利用方法について
- 13. nuxt(javascript)からlaravelへapiで配列データを渡す
- 14. PHPの名前空間について
- 15. PHPでできたWebサーバ「BayServer for PHP」のインストール方法
- 16. Ubuntu 22.04 + Nginx 1.22.1 – MariaDBインストール
- 17. phpenvに必要なパッケージ
- 18. 【WordPress】php.iniを編集するプラグイン「Custom PHP Settings」
- 19. Laravel Breezeでいい感じのログイン認証が作れる話
- 20. 【WordPress】アップロードファイルの容量上限の増やし方
// title => ‘たいとる’,
// outline => ‘がいよう’;
// ]
// として受け取れる// 下記はできそうでできない(なぜかnull)になる
// const array = [
// title
PHPの名前空間について
## はじめに
日本システム開発株式会社の藤井といいます。
今回は名前空間についてまとめてみました。## 名前空間とは
クラス、関数…をグループ化する機能です。
PHPタグの次の行で`namespace hoge`と宣言することで、それ以降の定義はすべてその名前空間(グループ)に属します。
名前空間を使うことでクラス、関数をグループごとに管理できます。## 使い方
hoge.php
“`php
“`foo.php
“`php
PHPでできたWebサーバ「BayServer for PHP」のインストール方法
# PHPでできたWebServer
BayServerは[横浜ベイキット](https://baykit.yokohama “Baykit Home”)が開発しているオープンソースの爆速Webサーバーです。
Java版、Ruby版、Python版、PHP版が存在し、すべて同じロジックで動作しています。ここではPHP版のインストール方法を解説します。
Webサーバ自体がPHPでできているので、ApacheやNginxなどをインストールすることなく、WordPressなどを動かすことができます。
PHPだけあれば動くというのがポイントかと思います。なお、BayServerはFCGIのクライアントにもサーバーにもなれるので、Apache + BayServerのような構成も可能ですし、BayServer + PHP-FPMという構成も可能です。
# 前提条件
BayServer for PHPはWindows/Mac/Unixいずれのプラットフォームでも動作します。BayServer for PHPを実行するのに必要なのは PHP7.4 以上の実行環境です。
インストール
Ubuntu 22.04 + Nginx 1.22.1 – MariaDBインストール
## 前提
Wordpress をインストールするにあたり、MariaDB と PHP をインストールします。
この記事では、MariaDB のインストールまでです。ちなみに、MariaDB とは MySQL から派生して誕生したオープンソースのデータベースです。MySQL は聞いたことがあったけど、MariaDB ははじめてだよ!
## 環境
Ubuntu 22.04
Nginx 1.22.1
MariaDB 10.6.11
## 設定
MariaDB のインストール。確認メッセージは`Y`して、エンター!
“`
$ sudo apt -y install mariadb-server
“`
デフォルトの文字コードを確認しておく。
“`
$ sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
“`
これになってればOK
“`
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
“`
MariaDB の初期設定をする。
“`
phpenvに必要なパッケージ
参考: https://qiita.com/ryo-endo/items/0e689e02cb87e09f4c7a
“`
sudo apt -y install \
build-essential \
sudo apt -y install \
libxml2-dev \
libssl-dev \
libbz2-dev \
libcurl4-openssl-dev \
libjpeg-dev \
libpng-dev \
libmcrypt-dev \
libreadline-dev \
libtidy-dev \
libxslt-dev \
autoconf \
libsqlite3-dev \
libonig-dev \
libzip-dev
“`
【WordPress】php.iniを編集するプラグイン「Custom PHP Settings」
WordPressでアップロードファイル上限を管理画面から変更したい時は「Custom PHP Settings」というプラグインを使ってphp.iniファイルを編集し対応してます。
php.iniファイルでは、PHPの初期設定の変更を定義することができます。
このファイルを編集することでファイルのアップロード上限を変更することも可能です。
### php.iniファイルで設定できること
– エラー表示
– メモリ管理
– セキュリティー
– 文字コード
– タムゾーン
– ログ## Custom PHP Settings
### 使い方
1. インストールと有効化
有効化が完了すると管理画面メニューのツールにCustom PHP Settingsが表示されます。
2. 管理画面 > ツール > Custom PHP Settings をクリック。
3. 画面上部の「General」タブをクリックし、入力エリアにコードを記述。
Laravel Breezeでいい感じのログイン認証が作れる話
# いきさつ
最近PHPのMVC方式のフレームワークである,[**Laravel**](http://laravel.jp/)にめちゃくちゃハマっております.
そしてLaravelの中には色んなパッケージが入ってるわけですが,その中でログイン認証機能などが便利に作成できる**Laravel Breeze**というもの見つけました.今回はそれの備忘録です.# そもそもLaravelとはなんなのか
前述の通り,LaravelはPHPのフレームワークです.MVC方式なのでデータベースを使用したWebアプリケーションが簡単に作れます.さらにArtisanと呼ばれるコマンドを使
【WordPress】アップロードファイルの容量上限の増やし方
ローカル環境で構築したWordPressを本番環境に反映させるときや、本番環境をローカル環境で構築する時に「All-in-One WP Migration」でエクスポートしたファイルをインポートしているのですが、ファイル容量上限をオーバーしていてエラーメッセージが表示されアップロードできません。
アップロードファイルの容量上限を変更可能なので、上限を上げてアップロードしていきます。
## 「.htaccess」ファイルを更新する
サーバーがApacheを利用している場合 `.htaccess` ファイルを変更することでアップロードファイルの容量を変更可能です。
WordPressのアップロードに関する挙動は次の3つのPHPディレクティブが制御しています。
– `upload_max_filesize`
– `post_max_size`
– `memory_limit``wp-base/wp/.htaccess`ファイル内に以下を追記します。
“`php
php_value upload_max_filesize 500M
php_value post_max_siz