- 投稿日:2019-04-17T23:45:54+09:00
LaravelでDBのデフォルト文字セットと照会順序を変更する
使用するMySQLのデフォルト文字セットと照会順序と、Laravelの設定を合わせたい時に。
使いたいMySQLの設定
Laravelの設定を変えるため、database.phpを編集する
config/database.php'mysql' => [ 〜略〜 // 'charset' => 'utf8mb4', // 'collation' => 'utf8mb4_unicode_ci', 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 〜略〜 ],これでmigrationでテーブルを作り直せば、文字セットと照会順序が統一できる。
参考
https://qiita.com/n-funaki/items/6ce33602d096da0968f4
https://www.playfulit.net/articles/kzvXJM6YfWT1mUP492odNfBR
- 投稿日:2019-04-17T23:11:08+09:00
php-master-changes 2019-04-16
今日は .gitignore の更新、不要コードの削除、新しめのバージョンの curl で廃止予定関数を使わないようにする修正、デフォルトの php.ini の typo の修正、7.2 〜 7.3 系の開発バージョンの引き上げ、ArrayIterator が 7.3.0 からバグっていた問題の修正、ハッシュテーブルの実装修正、JIT の Context Threading の実装を改善する修正があった!
2019-04-16
petk: Remove not needed extension generated files gitignores
- https://github.com/php/php-src/commit/68842534616cd0ab29af4c1b8966c4ebf9900c2c
- [7.4~]
- .gitignore で不要になった行の削除
dstogov: execute_data->return_value is not used for internal functions
- https://github.com/php/php-src/commit/3f7bf35e169556f441e5840909261f1677fff640
- [7.4~]
- 内部関数では execute_data->return_value は使われていないため初期化コードを削除
cmb69: Use curl_mime_*() functions if available
- https://github.com/php/php-src/commit/a83b68ba56714bfa06737a61af795460caa4a105
- [7.4~]
- ext/curl で、新しめのバージョンの curl で廃止予定関数を使わないよう修正
nikic: Partial fix for bug #77903
- https://github.com/php/php-src/commit/e1b4cabbd6d5ce72bb73ec4988b91c1e62c71335
- ArrayIterator が 7.3.0 からバグっていた問題の部分的修正
- とりあえずハッシュテーブルの無効な内部ポインタでは処理しないようにした
nikic: Fix second part of bug #77903
- https://github.com/php/php-src/commit/9a9eed472b05292f8e8aa82129ea5d1da4b0e0c2
- ↑の残っていた部分の修正
- テストコードを 3v4l に投げると、わりと「にゃーん」という気持ちになる
nikic: s/mysql_connect()/mysqli_connect() in php.ini
- https://github.com/php/php-src/commit/9a85a944d8ed79a9f006873be5c5f762e037ccbf
- [7.3~]
- デフォルトの php.ini で、mysql_connect() と書いてあったのを mysqli_connect に修正
cmb69: Prepare main branch for PHP 7.3.6
- https://github.com/php/php-src/commit/5ae49c43dc618ad373b88480a1662e480bd125fb
- [7.3~]
- 7.3 系の開発バージョンを 7.3.6 に引き上げ
nikic: Fix HT flags copying wrt iterator count
- https://github.com/php/php-src/commit/f9a755d0d27eebd02fdeb9b1750aaca70b15f409
- [7.3~]
- HT_FLAGS のコピー時イテレータ数を考慮するよう修正
- PHP 7 の foreach 修正 時にハッシュテーブルに紐づくイテレータの数を管理するような修正が入っている
- HT_FLAGS にはこれが含まれてる
- 不要な箇所ではイテレータ数をコピーせずマスクするよう修正している
nikic: Don't overwrite iterator count during real init
- https://github.com/php/php-src/commit/bd6ebf40b205387457d51288691e31a05ce7ad27
- [7.4~]
- ハッシュテーブルの "real init" 時にイテレータ数を上書きしないよう修正
- シリアライズ関係で入った奴?っぽいけどあまり追っておらずよく分かっておらず
dstogov: Improved support for "context threading" (not enabled).
- https://github.com/php/php-src/commit/f603f5c63caa6cdd94e0cf6540082efa9345f071
- ext/opcache/jit で、(現状ではデフォルト無効の)Context Threading の実装を改善
- リンク先の説明見てて i386 で eip の値をとるのに call-pop だと call と ret の対応崩れてプロセッサの分岐予測を乱すから call-mov-ret を使おうみたいな話を昔聞いたのを思い出した
- PHP の JIT エンジンでは呼び出しの多いベンチマークでは 25% 程度の性能向上があったらしい、けど別の再帰のベンチマークでは遅くなったらしい
remicollet: next is 7.2.19
- https://github.com/php/php-src/commit/6c44a71e4a0fd86c885a939a0b2f2ae082dcdf34
- [7.2~]
- 7.2 系の開発バージョンを 7.2.19 へ引き上げ
- 投稿日:2019-04-17T22:41:00+09:00
ValetでLaravel開発環境を構築してみた
概要
MacミニマニストのためのLaravel開発環境である「Valet」を実装してみました。
注意事項、留意点
- 基本的には公式ドキュメントを参考にしてます
- というよりほぼこれを見ながらやりました
- Valetは「ベレット」と読むらしいです
前提条件
- バージョン
- OS: MacOS 10.14.2
- Homebrew: 2.0.5 (当時の最新版)
- 更新日
- 2019/04/17
構築手順
1. Homebrewのインストール
- ここでは割愛します
- 基本的には公式ページを参照するといいと思います
- 私はこちらをはじめとしたQiita記事を参考にしました
brew doctor
でYour system is ready to brew.
と出てこればOKらしいです- 私は以下のようなメッセージが出ましたが、「気にするな」と書いてあるので気にせず次に進みました
Please note that these warnings are just used to help the Homebrew maintainers with debugging if you file an issue. If everything you use Homebrew for is working fine: please don't worry or file an issue; just ignore this. Thanks!2. インストール
- php7.3をhomebrewでインストールします
brew install php
composerをインストールします
- ここでは割愛します。私は以前curlで入れたもので問題なかったので、brewでなくてもいいらしいです
Valetをインストールします
- これによりValetとDnsMasqがインストール/設定され、システム起動時に起動するValetのデーモンが登録されるとのことです。
composer global require laravel/valet valet install3. サイト動作
- 任意の場所でディレクトリを作成し、移動します
(ここではlaravel/valet/
を再帰的に作成します)mkdir -p laravel/valet/ cd laravel/valet/
- parkコマンドを実行します
- サイト検索の親ディレクトリとして登録されるとのことです
valet park
- pathsコマンドで、実際にparkされたかを確認します
valet paths
- 以下のような形で出力されればOKです
[ "/********/laravel/valet" ]
- Laravelプロジェクトを作成します
(ここではstartlaravel
という名前のLaravelプロジェクトを作成します)laravel new startlaravel
- サイトを動かします(http://{プロジェクト名}.test/で開きます)
http://startlaravel.test/参照
以下のサイトを参考にしました。
- 投稿日:2019-04-17T22:37:40+09:00
Laravel でDBのテーブルを全削除して作り直す
既存のtableをリセットしたい、または、接続先のDBを変更した、というようなときに。
全tableを削除して、マイグレーションを初めから実行するartisanコマンド。
php artisan migrate:fresh.envを書き換えてDBを変えた場合、先にcacheクリアする。
php artisan cache:clear php artisan config:clear
- 投稿日:2019-04-17T21:48:22+09:00
Laravel Homestead でLaravel 開発環境を構築してみた
概要
Laravel HomesteadというLaravel公式の仮想マシンで、
Laravel開発環境を構築してみました。
ここではその構築手順を記載します。このLaravel Homesteadでは必要なソフトウェアが仮想環境内に入っていて、
ローカルマシンにそれぞれインストールせずに環境構築を完了できます。
Laravel公式ページで推奨されているやり方です(2019/04/01当時)。注意事項、留意点
- 基本的には公式ドキュメントを参考にしてます
- というよりほぼそれを見て構築しました。
- 他の仮想化ソフトウェアでもOKらしいです(VMWareなど)が、無料なのでVirtualBoxを使いました。
前提条件
- バージョン
- OS: MacOS 10.14.2
- VirtualBox: 6.0.4
- Vagrant: 2.2.4
- laravel: 5.8
- 更新日
- 2019/04/17
実際の手順
1. VirtualBoxのインストール(インストールしてない場合のみ)
- VirtualBoxからダウンロードします
- お使いのOSのhostsを選んでクリックし、ダウンロードします
- ダウンロードされたdmgファイルをクリックします
- pkgファイルのアイコンが表示されるので、それをダブルクリックしします
- そのあとはインストール画面に則ってインストールします
- 「安全でないアプリケーション」等が出てインストールできない場合は、以下を確認してください
- 左上のアップルマーク →「システム環境設定」 →「セキュリティとプライバシー」
- 左下の鍵マークをクリックしてインストールの許可を行ってください
- VirtualBoxがアプリケーションに表示されていればOKです
2. Vagrant のインストール(インストールしてない場合のみ)
- Vagrantからダウンロードします
- お使いのOSを選んでクリックし、ダウンロードします
- ダウンロードされたdmgファイルをクリックします
- pkgファイルのアイコンが表示されるので、それをダブルクリックします
- そのあとはインストール画面に則ってインストールします(怒られたらVirtualBoxと同様に対応してください)
- ターミナルで
vagrant -v
を叩いて、バージョン情報が表示されればOKです(こちらはアプリケーションに出ません)3. Homestead Vagrant Boxのインストール
- Laravel用のボックス(ベースとなるイメージ)であるHomestead Vagrant Boxを以下コマンドでインストールします
- これを叩くことで、複数の環境で laravel/homestead ボックスを呼び出せるようになります
vagrant box add laravel/homestead
- 途中provider を選択する箇所があるので、VirtualBoxを選択します
- 問題なくいけば成功です
- Vagrantのバージョンが古い場合に失敗する可能性があるらしいので、その場合はバージョンを確認してみてください
4. Homesteadのインストール
- Homestead をリポジトリからクローンします
git clone https://github.com/laravel/homestead.git ~/Homestead
- masterだと安定しない可能性があるため、バージョンタグがついたHomesteadをチェックアウトします
(私が見た時の最新バージョンはv8.2.0
でした)cd ~/Homestead git checkout v8.2.0
Homestead.yaml
設定ファイルを生成する用のバッシュコマンドを実行します
(init.sh
ファイルの中をみたらわかりますが、resourceディレクトリ内のyamlファイルをコピーしているだけです)bash init.sh5. Homesteadの設定
Homestead.yaml
内のprovider
をvirtualbox
に書き換えます
(デフォルトがvirtualbox
になっていたので書き換え不要でしたが、一応確認しましょう)provider: virtualbox
Homestead.yaml
内のfolders
を書き換え、共有フォルダを設定します (ここでは/laravel/environment_homestead/
ディレクトリを作って、この中のディレクトリ全てをHomestead環境と同期するようにします)folders: - map: ~/laravel/environment_homestead to: /home/vagrant/code type: "nfs"6. Nginxの設定
Homestead.yaml
内のsites
を書き換え、Nginxを設定します (ここではstartlaravel
という名前のlaravelプロジェクトをあとで作成することを前提としています)sites: - map: homestead.test to: /home/vagrant/code/startlaravel/public7. hostsファイルの書き換え
/etc/hosts
ファイルに以下を追加し、ローカルドメインへのリクエストをHomesteadに転送されるようにします192.168.10.10 homestead.test8. Vagrantの起動、ssh接続
- 以下コマンドでvagrantを起動します
vagrant up
- 以下コマンドでssh接続します
vagrant ssh9. vagrant内でLaravelプロジェクトを作成
- 以下コマンドで
code
ディレクトリに移動して、laravelプロジェクトを作成します
(ここではstartlaravel
というプロジェクトを開始しますが、何でも構いません。ただし6で行ったNginxの設定と同じディレクトリルートにしましょう)vagrant@homestead:~$ cd code vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel startlaravel10. サイトを開く
参照
以下のサイトを参考にしました。
- 投稿日:2019-04-17T20:27:21+09:00
phpのpublic・private・protectを理解しよう!
あれ?なんでNULLになるんだ??
データベースからデータを引っ張る関数を叩いてるのに、なぜかNULL…
var_dump
するとちゃんと引っ張れてるみたいだけど…
ん?private??
なんじゃこりゃ???classにはアクセス修飾子がある。
・どこからでもアクセス可能な
public
・class内部からしかアクセス出来ないprivate
・継承された子のclassと親のclassしかアクセス出来ないprotected
の3つがあります。
それぞれ適切に宣言することで
間違った動作を弾き、安全性を高めることが出来ます。public
きっとclassを学び始めたボーイアンドガールは見慣れたアクセス装飾子。
class oyakurasu{ public $kotoba = 'たいへんなんじゃよ'; } $oya = new oyakurasu(); echo $oya->kotoba; //たいへんなんじゃよ $oya->kotoba = 'やっぱかんたん'; echo $oya->kotoba; //やっぱかんたん var_dump($oya); //object(oyakurasu)#1 (1) { ["kotoba"]=> string(21) "やっぱかんたん" }こんな感じでclassの外部から
アクセスして書き換えたり読み取ったり出来ます。private
privateはclassの内部でしかアクセス出来なくなるアクセス装飾子です。
例えばclassの中で完結する処理はprivateにすると
後でへんに変更を加えられないので安全性が高まります。class oyakurasu{ private $kotoba = 'たいへんなんじゃよ'; } $oya = new oyakurasu(); echo $oya->kotoba; //Fatal error: Uncaught Error: Cannot access private property $oya->kotoba = 'やっぱかんたん'; //Fatal error: Uncaught Error: Cannot access private property echo $oya->kotoba; //Fatal error: Uncaught Error: Cannot access private property var_dump($oya); //object(oyakurasu)#1 (1) { ["kotoba":"oyakurasu":private]=> string(27) "たいへんなんじゃよ" }こんな感じで外部からアクセスしようとすると
Fatal error
でprivateプロパティは外部からアクセス出来ません
と怒られます。protected
protectedは宣言されたclass内部と
そのclassを継承した子classの内部でしかアクセス出来なくなるアクセス装飾子です。
privateと同様にclass外部からはアクセス出来ません。class oyakurasu{ protected $kotoba = 'たいへんなんじゃよ'; } class kokurasu extends oyakurasu{ public function hatugen(){ return $this->kotoba; } public function omoidasu(){ $this->kotoba = 'やっぱかんたん'; } } $ko = new kokurasu(); echo $ko->hatugen(); //たいへんなんじゃよ $ko->omoidasu(); echo $ko->hatugen(); //やっぱかんたん echo $ko->kotoba; //Fatal error: Uncaught Error: Cannot access protected property $ko->kotoba = 'でもきつい';//Fatal error: Uncaught Error: Cannot access protected property var_dump($ko); //object(kokurasu)#1 (1) { ["kotoba":protected]=> string(21) "やっぱかんたん" }こんな感じで
kokurasu
内ではprotectedの$kotoba
はアクセスして書き換えたり読み替えたり出来ますが
classの外部からはアクセス出来ません。でも外部からprivateやprotectedにアクセスしたい…
そんなワガママボディをもったマダムのご要望にお答えしましょう。
privateやprotectedな部分に干渉するpublicな関数を作れば良いのです。class oyakurasu{ private $kotoba = 'たいへんなんじゃよ'; public function yomitori(){ return $this->kotoba; } public function kakikomi($text){ $this->kotoba = $text; } } $oya = new oyakurasu(); echo $oya->kotoba; //atal error: Uncaught Error: Cannot access private property $oya->kotoba = 'やっぱかんたん'; //atal error: Uncaught Error: Cannot access private property echo $oya->yomitori(); //たいへんなんじゃよ $oya->kakikomi('でもきつい'); echo $oya->yomitori(); //でもきつい var_dump($oya); //object(oyakurasu)#1 (1) { ["kotoba":"oyakurasu":private]=> string(15) "でもきつい" }こうすれば
実質外部からアクセスしてない
実質内部からアクセスしてる
からprivateやprotectedへの干渉が出来ます。編集後記
入社13日目
すでに存在しているclassからデータを引っ張る際に困ったのでまとめました。
入社してから、ソースコードの修正ばかりやっているのでこういうテクニックが身についていきます。
と同時にあやふやにしてた部分も身につくので
やっぱ人のソースコード弄るのってレベルアップになります。
- 投稿日:2019-04-17T20:26:32+09:00
初心者がlaravelをロリポップレンタルサーバに導入した手順
初心者でもlaravelをレンタルサーバーに導入!
- 今まで生のPHPかcodeigniterしか使ったことない完全なlaravel初心者。
- なので初心者目線で色々書いてます。(主にターミナルへの愚痴)
- なんかみんなAWSとかばっかだけど、laravelを導入したい既存のサイトのサーバーロリポップだったのでなんとかしてみた。
- macで実行してます。
- laravel5.5
- こちらのサイトめちゃくちゃ参考にしました。この記事で行き詰まった方はこちらもご参考ください。
ロリポップにcomposerをインストールしてLaravel5.5を公開する
前提条件
ロリポップでSSHが使えること。
つまりはスタンダードプラン、エンタープライズプランの契約であること。php 7.1に設定していること(これもロリポップのユーザーページにて)
まずはロリポップのユーザーページでSSH認証
ターミナルからロリポップに入る!
ターミナルは怖くない!
もう本当にターミナルが苦手…(泣)
しかし頑張りましょう。
ターミナルがなんぞやって方はググってください。
超抵抗がある方はありそうですが、意外とコピペが上手にできればなんとかなります。まずはターミナルでこちらを入力。
$ ssh アカウント名@サーバー名 -p接続ポートこのアカウント名やサーバー名が?な方はご安心を、
先ほどのSSHを認証したところと同じ画面にもう一度行けば全部綺麗に書いてくれてますので
そのままコピペしましょう。そしてエンター!パスワード入力
上記のコマンドがうまくいくとパスワードを求められます。
password:ってだけ!
パスワードはSSHのパスワードです!
こちらもさっきのページにのっています。
自分はここで延々とロリポップのパスワードとかを打って弾かれてました。
SSHパスワードが勝手に発行されてるとは…。ディレクトリの移動
パスワードの入力もうまくいくと、
ターミナルが[アカウント名~]$とだけいきなり出してきます。
(可愛くなさすぎてヤバイ。OKくらい言ってくれ。)ここでターミナルのコマンドである
lsと入力すると、
webとだけまた出してくれます…。
けどこれで一応正解です。このwebという中に入りたいので
ターミナルのコマンドのcd webといれます。必ずスペース(空白)は必要です。
すると
[アカウント名 web]$と分かりづらいですがちゃんとwebの中に入れました!
ちなみに後で気づいたのですが、
今いる位置はロリポップFTP開いた最初のページにいる感じです!
ここにlaravelが入った「フォルダ」をインストールするのです。composerをインストール
PHPやってたら嫌というほど出てくるこの人。
laravelはこのcomposerを通してインストールするので、まずはこの人をインストールするしかない!/usr/local/php7.1/bin/php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"こちらをコピペでターミナルに打ち込みます。
意味はわからなくていいと思います。(よくない)するとインストールが開始されます!
すごい!Composer (version 1.8.5) successfully〜〜〜
と出ればOK。
(2019/4/16現在)確認したい人は、ロリポップFTPの最初のページに
composer.phar
があることを確認できるはずです。PHPのPATHを通します。
export PATH="$PATH:/usr/local/php7.1/bin"このままコピペでOKですが、PATHとは?とか興味ある方は調べてみてください〜。
ちなみにこれを入力してエンターしてもターミナルは何も言いません。
けどエラーとかも出しません。
なんて冷たい…。あとはlaravelをインストールするだけ!
/usr/local/php7.1/bin/php composer.phar create-project --prefer-dist laravel/laravel フォルダ名 "5.5.*"laravelは5.7も出ているようですが、情報の多い5.5にしてます。
(2019/4/16現在)フォルダ名はlaravelを公開したい独自ドメインで指定しているフォルダ名です。
ロリポップのユーザーページの「独自ドメイン設定」からご確認を!ここで
独自ドメインの公開(アップロード)フォルダについて大事な補足!上記のフォルダ名はだいたい、
example.comとかなら
example
となっていますが、
laravelを使う場合は、
example/public
とする必要があります。
laravelをインストールしたら分かりますが、中にpublicというフォルダがあり
ここが公開フォルダのためです。なのでロリポップの独自ドメイン設定の部分の確認・変更で
先に変更しておきましょう。(一瞬です)ちなみに当然ですがターミナルに打ち込むフォルダ名はexampleの部分だけでOKです。
さて仕切り直して、
さきほどのコマンドをターミナルを入力したら、
バーーーーーーとインストールが始まります。
数分はかかります!set successfully.と出ればOK。
というデフォルトページが!
これにてlaravelの導入完了です!
がここで
500エラー出た方。
実は自分も最初の30分くらい500エラーでした。
色々情報を探し実行しましたが変化なし…
調べ終わって意気消沈してる時に、もう一回更新したらさらっと表示されました・・・・・。多分ですが、直前でレンタルサーバーのPHP設定を7.1に変えたりしていたのでその反映に時間がかかったのかなぁと思っています。
こういうケースに該当する場合は少し待ってみたら改善されるかも…。はい!以上で初心者のlaravelをロリポップサーバーに導入した手順終了です!
不自然なところとかあったらすいません。とりあえず感想としては
ターミナル
なんだこいつ。
- 投稿日:2019-04-17T20:26:32+09:00
初心者がlaravelをロリポップレンタルサーバーに導入した手順
初心者でもlaravelをレンタルサーバーに導入!
- 今まで生のPHPかcodeigniterしか使ったことない完全なlaravel初心者。
- なので初心者目線で色々書いてます。(主にターミナルへの愚痴)
- なんかみんなAWSとかばっかだけど、laravelを導入したい既存のサイトのサーバーがロリポップだったのでなんとかしてみた。
- macで実行してます。
- laravel5.5
- こちらのサイトめちゃくちゃ参考にしました。この記事で行き詰まった方はこちらもご参考ください。
ロリポップにcomposerをインストールしてLaravel5.5を公開する
前提条件
ロリポップでSSHが使えること。
つまりはスタンダードプラン、エンタープライズプランの契約であること。php 7.1に設定していること(これもロリポップのユーザーページにて)
まずはロリポップのユーザーページでSSH認証
ターミナルからロリポップに入る!
ターミナルは怖くない!
もう本当にターミナルが苦手…(泣)
しかし頑張りましょう。
ターミナルがなんぞやって方はググってください。
超抵抗がある方はありそうですが、意外とコピペが上手にできればなんとかなります。まずはターミナルでこちらを入力。
$ ssh アカウント名@サーバー名 -p接続ポートこのアカウント名やサーバー名が?な方はご安心を、
先ほどのSSHを認証したところと同じ画面にもう一度行けば全部綺麗に書いてくれてますので
そのままコピペしましょう。そしてエンター!パスワード入力
上記のコマンドがうまくいくとパスワードを求められます。
password:ってだけ!
パスワードはSSHのパスワードです!
こちらもさっきのページにのっています。
自分はここで延々とロリポップのパスワードとかを打って弾かれてました。
SSHパスワードが勝手に発行されてるとは…。ディレクトリの移動
パスワードの入力もうまくいくと、
ターミナルが[アカウント名~]$とだけいきなり出してきます。
(可愛くなさすぎてヤバイ。OKくらい言ってくれ。)ここでターミナルのコマンドである
lsと入力すると、
webとだけまた出してくれます…。
けどこれで一応正解です。このwebという中に入りたいので
ターミナルのコマンドのcd webといれます。必ずスペース(空白)は必要です。
すると
[アカウント名 web]$と分かりづらいですがちゃんとwebの中に入れました!
ちなみに後で気づいたのですが、
今いる位置はロリポップFTP開いた最初のページにいる感じです!
ここにlaravelが入った「フォルダ」をインストールするのです。composerをインストール
PHPやってたら嫌というほど出てくるこの人。
laravelはこのcomposerを通してインストールするので、まずはこの人をインストールするしかない!/usr/local/php7.1/bin/php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"こちらをコピペでターミナルに打ち込みます。
意味はわからなくていいと思います。(よくない)するとインストールが開始されます!
すごい!Composer (version 1.8.5) successfully〜〜〜
と出ればOK。
(2019/4/16現在)確認したい人は、ロリポップFTPの最初のページに
composer.phar
があることを確認できるはずです。PHPのPATHを通します。
export PATH="$PATH:/usr/local/php7.1/bin"このままコピペでOKですが、PATHとは?とか興味ある方は調べてみてください〜。
ちなみにこれを入力してエンターしてもターミナルは何も言いません。
けどエラーとかも出しません。
なんて冷たい…。あとはlaravelをインストールするだけ!
/usr/local/php7.1/bin/php composer.phar create-project --prefer-dist laravel/laravel フォルダ名 "5.5.*"laravelは5.7も出ているようですが、情報の多い5.5にしてます。
(2019/4/16現在)フォルダ名はlaravelを公開したい独自ドメインで指定しているフォルダ名です。
ロリポップのユーザーページの「独自ドメイン設定」からご確認を!ここで
独自ドメインの公開(アップロード)フォルダについて大事な補足!上記のフォルダ名はだいたい、
example.comとかなら
example
となっていますが、
laravelを使う場合は、
example/public
とする必要があります。
laravelをインストールしたら分かりますが、中にpublicというフォルダがあり
ここが公開フォルダのためです。なのでロリポップの独自ドメイン設定の部分の確認・変更で
先に変更しておきましょう。(一瞬です)ちなみに当然ですがターミナルに打ち込むフォルダ名はexampleの部分だけでOKです。
さて仕切り直して、
さきほどのコマンドをターミナルを入力したら、
バーーーーーーとインストールが始まります。
数分はかかります!set successfully.と出ればOK。
というデフォルトページが!
これにてlaravelの導入完了です!
がここで
500エラー出た方。
実は自分も最初の30分くらい500エラーでした。
色々情報を探し実行しましたが変化なし…
調べ終わって意気消沈してる時に、もう一回更新したらさらっと表示されました・・・・・。多分ですが、直前でレンタルサーバーのPHP設定を7.1に変えたりしていたのでその反映に時間がかかったのかなぁと思っています。
こういうケースに該当する場合は少し待ってみたら改善されるかも…。
- 投稿日:2019-04-17T16:32:55+09:00
Laravelで認証用APIのテストを書く
Laravel + Vue.jsを勉強している際に、APIを利用した認証でログアウトを確認するためのUnitテストで、便利なアサーションがあったので、備忘録として記録
前提
- Laravel5.8(5.5~)
テストケースの作成
Laravelのドキュメントルート上で、以下コマンドを実行する
php artisan make:test AuthenticationTestテストコード
tests/Feature/AuthenticationTest.php<?php namespace Tests\Feature; use App\User; use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase; class AuthenticationTest extends TestCase { use RefreshDatabase; protected $user; public function setUp(): void { parent::setUp(); // テストユーザ作成 $this->user = factory(User::class)->create(); } /** * ログイン認証テスト */ public function testLogin(): void { // 作成したテストユーザのemailとpasswordで認証リクエスト $response = $this->json('POST', route('login'), [ 'email' => $this->user->email, 'password' => 'password', ]); // 正しいレスポンスが返り、ユーザ名が取得できることを確認 $response ->assertStatus(200) ->assertJson(['name' => $this->user->name]); // 指定したユーザーが認証されていることを確認 $this->assertAuthenticatedAs($this->user); } /** * ログアウトテスト */ public function testLogout(): void { // actingAsヘルパで現在認証済みのユーザーを指定する $response = $this->actingAs($this->user); // ログアウトページへリクエストを送信 $response->json('POST', route('logout')); // ログアウト後のレスポンスで、HTTPステータスコードが正常であることを確認 $response->assertStatus(200); // ユーザーが認証されていないことを確認 $this->assertGuest(); } }参考サイト
- 投稿日:2019-04-17T10:21:42+09:00
XAMPとMAMPを同一PCにインストールすることで起こる競合について
XAMPとMAMPが競合する問題の解決方法の備忘録
事の発端について
XAMPをインストールした環境にMAMPをインストールした際、MAMPのMySQLサーバが起動しない問題が発生した。
この解決方法?
ポートを変えればなんとかなるかと思ったができなかったため、私の環境(Win10)では、まず環境変数からXAMPに通されているMySQLのPathを削除。これでMAMPのインストールを行うことで、MySQLのPathをMAMP側に変更し、結果MySQLサーバが起動できた。
しかし、この状態だと何故かphpMyAdminを開くとエラーが出てくる。これを解決するにはMAMPのPHPconfを変えろとメッセージが表示されるが、XAMPを開いとけばなぜかphpMyAdminを開くことができた。(もしかしたらXAMPを起動しておけばMySQLのPathを変更しなくてもいけるかも)真の解決方法
そもそもWin環境でXAMPを使いながらMAMPを入れなければ良いのだ。XAMPだけで良くない?
- 投稿日:2019-04-17T02:24:27+09:00
[Laravel]保存した画像が404エラーで表示されない
問題
画像を取得して表示させようとしたときに、データを取得してくることまではできたのですが、表示すると404エラーがでてきて、パスは間違っていないのに、表示できませんでした。
開発環境
PHP :7.2.15
Laravel :5.6画像の取得、表示については公式リファレンスや他の記事等で書いてあることを参考にしていたのですが、大まかには以下の流れです。
解決方法
画像自体のパスは間違っていなかったので、「Public」のシンボリックリンクのパスを調べたところ下のように「storage -> /Users/[ユーザ名]/laravel/application/storage/app/public」となっていました。
root@qw2b32a12s7e:/var/www/public# ls -la total 32 drwxr-xr-x 13 root root 416 Apr 10 03:56 . drwxr-xr-x 27 root root 864 Apr 10 02:56 .. drwxr-xr-x 3 root root 96 Apr 1 08:07 css -rw-r--r-- 1 root root 6148 Apr 10 07:53 .DS_Store -rw-r--r-- 1 root root 0 Apr 1 08:07 favicon.ico -rw-r--r-- 1 root root 593 Apr 1 08:07 .htaccess -rw-r--r-- 1 laradock www-data 1823 Apr 1 08:07 index.php drwxr-xr-x 3 laradock laradock 96 Apr 1 08:07 js -rw-r--r-- 1 root root 70 Apr 1 08:07 mix-manifest.json -rw-r--r-- 1 root root 24 Apr 1 08:07 robots.txt lrwxr-xr-x 1 root root 56 Apr 10 03:56 storage -> /Users/[ユーザ名]/laravel/application/storage/app/public -rw-r--r-- 1 root root 914 Apr 1 08:07 web.configStorageのシンボリックリンクを変更します。↓
root@qw2b32a12s7e:/var/www/public# ln -nfs /var/www/storage/app/public storage↑のコマンドを入力するとStorageのパスが「storage -> /var/www/storage/app/public/」に変更され、画像が表示されました。
root@qw2b32a12s7e:/var/www/public# ll total 32 drwxr-xr-x 13 root root 416 Apr 10 08:20 ./ drwxr-xr-x 27 root root 864 Apr 10 02:56 ../ -rw-r--r-- 1 root root 11 Apr 9 08:41 aaa.html drwxr-xr-x 3 root root 96 Apr 1 08:07 css/ -rw-r--r-- 1 root root 6148 Apr 10 07:53 .DS_Store -rw-r--r-- 1 root root 0 Apr 1 08:07 favicon.ico -rw-r--r-- 1 root root 593 Apr 1 08:07 .htaccess -rw-r--r-- 1 laradock www-data 1823 Apr 1 08:07 index.php drwxr-xr-x 3 laradock laradock 96 Apr 1 08:07 js/ -rw-r--r-- 1 root root 70 Apr 1 08:07 mix-manifest.json -rw-r--r-- 1 root root 24 Apr 1 08:07 robots.txt lrwxrwxrwx 1 root root 27 Apr 10 08:20 storage -> /var/www/storage/app/public/ -rw-r--r-- 1 root root 914 Apr 1 08:07 web.config