20190417のPHPに関する記事は11件です。

LaravelでDBのデフォルト文字セットと照会順序を変更する

使用するMySQLのデフォルト文字セットと照会順序と、Laravelの設定を合わせたい時に。

使いたいMySQLの設定

_ 2019-04-17 23.36.54.jpg

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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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

dstogov: execute_data->return_value is not used for internal functions

cmb69: Use curl_mime_*() functions if available

nikic: Partial fix for bug #77903

nikic: Fix second part of bug #77903

nikic: s/mysql_connect()/mysqli_connect() in php.ini

cmb69: Prepare main branch for PHP 7.3.6

nikic: Fix HT flags copying wrt iterator count

nikic: Don't overwrite iterator count during 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

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ValetでLaravel開発環境を構築してみた

概要

MacミニマニストのためのLaravel開発環境である「Valet」を実装してみました。

注意事項、留意点

  • 基本的には公式ドキュメントを参考にしてます
  • というよりほぼこれを見ながらやりました
  • Valetは「ベレット」と読むらしいです

前提条件

  • バージョン
    • OS: MacOS 10.14.2
    • Homebrew: 2.0.5 (当時の最新版)
  • 更新日
    • 2019/04/17

構築手順

1. Homebrewのインストール

  • ここでは割愛します
  • 基本的には公式ページを参照するといいと思います
  • 私はこちらをはじめとしたQiita記事を参考にしました
  • brew doctorYour 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 install

3. サイト動作

  • 任意の場所でディレクトリを作成し、移動します
    (ここでは 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/

参照

以下のサイトを参考にしました。

Laravel 5.8 Laravel Valet
GitHub

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel でDBのテーブルを全削除して作り直す

既存のtableをリセットしたい、または、接続先のDBを変更した、というようなときに。

全tableを削除して、マイグレーションを初めから実行するartisanコマンド。

php artisan migrate:fresh

.envを書き換えてDBを変えた場合、先にcacheクリアする。

php artisan cache:clear
php artisan config:clear
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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.sh

5. Homesteadの設定

  • Homestead.yaml内のprovidervirtualboxに書き換えます
    (デフォルトが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/public

7. hostsファイルの書き換え

  • /etc/hostsファイルに以下を追加し、ローカルドメインへのリクエストをHomesteadに転送されるようにします
192.168.10.10  homestead.test

8. Vagrantの起動、ssh接続

  • 以下コマンドでvagrantを起動します
vagrant up
  • 以下コマンドでssh接続します
vagrant ssh

9. vagrant内でLaravelプロジェクトを作成

  • 以下コマンドでcodeディレクトリに移動して、laravelプロジェクトを作成します
    (ここでは startlaravelというプロジェクトを開始しますが、何でも構いません。ただし6で行ったNginxの設定と同じディレクトリルートにしましょう)
vagrant@homestead:~$ cd code
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel startlaravel

10. サイトを開く

  • http://homestead.testで以下の画面が表示されればOKですスクリーンショット 2019-04-17 21.39.05.png

参照

以下のサイトを参考にしました。

Laravel Homestead イントロダクション
Homestead GitHubリポジトリ

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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 errorprivateプロパティは外部からアクセス出来ませんと怒られます。

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からデータを引っ張る際に困ったのでまとめました。
入社してから、ソースコードの修正ばかりやっているのでこういうテクニックが身についていきます。
と同時にあやふやにしてた部分も身につくので
やっぱ人のソースコード弄るのってレベルアップになります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

初心者がlaravelをロリポップレンタルサーバに導入した手順

初心者でもlaravelをレンタルサーバーに導入!

  • 今まで生のPHPかcodeigniterしか使ったことない完全なlaravel初心者。
  • なので初心者目線で色々書いてます。(主にターミナルへの愚痴)
  • なんかみんなAWSとかばっかだけど、laravelを導入したい既存のサイトのサーバーロリポップだったのでなんとかしてみた。
  • macで実行してます。
  • laravel5.5
  • こちらのサイトめちゃくちゃ参考にしました。この記事で行き詰まった方はこちらもご参考ください。

ロリポップにcomposerをインストールしてLaravel5.5を公開する

前提条件

ロリポップでSSHが使えること。
つまりはスタンダードプラン、エンタープライズプランの契約であること。

php 7.1に設定していること(これもロリポップのユーザーページにて)

まずはロリポップのユーザーページでSSH認証

スクリーンショット 2019-04-17 19.09.16.png
このメニューにある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。

あとは実際のURLをブラウザで入力すれば、、、
スクリーンショット 2019-04-17 20.20.22.png

というデフォルトページが!

これにてlaravelの導入完了です!

がここで

500エラー出た方。

実は自分も最初の30分くらい500エラーでした。
色々情報を探し実行しましたが変化なし…
調べ終わって意気消沈してる時に、もう一回更新したらさらっと表示されました・・・・・。

多分ですが、直前でレンタルサーバーのPHP設定を7.1に変えたりしていたのでその反映に時間がかかったのかなぁと思っています。
こういうケースに該当する場合は少し待ってみたら改善されるかも…。

はい!以上で初心者のlaravelをロリポップサーバーに導入した手順終了です!
不自然なところとかあったらすいません。

とりあえず感想としては

ターミナル

なんだこいつ。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

初心者がlaravelをロリポップレンタルサーバーに導入した手順

初心者でもlaravelをレンタルサーバーに導入!

  • 今まで生のPHPかcodeigniterしか使ったことない完全なlaravel初心者。
  • なので初心者目線で色々書いてます。(主にターミナルへの愚痴)
  • なんかみんなAWSとかばっかだけど、laravelを導入したい既存のサイトのサーバーがロリポップだったのでなんとかしてみた。
  • macで実行してます。
  • laravel5.5
  • こちらのサイトめちゃくちゃ参考にしました。この記事で行き詰まった方はこちらもご参考ください。

ロリポップにcomposerをインストールしてLaravel5.5を公開する

前提条件

ロリポップでSSHが使えること。
つまりはスタンダードプラン、エンタープライズプランの契約であること。

php 7.1に設定していること(これもロリポップのユーザーページにて)

まずはロリポップのユーザーページでSSH認証

スクリーンショット 2019-04-17 19.09.16.png
このメニューにある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。

あとは実際のURLをブラウザで入力すれば、、、
スクリーンショット 2019-04-17 20.20.22.png

というデフォルトページが!

これにてlaravelの導入完了です!

がここで

500エラー出た方。

実は自分も最初の30分くらい500エラーでした。
色々情報を探し実行しましたが変化なし…
調べ終わって意気消沈してる時に、もう一回更新したらさらっと表示されました・・・・・。

多分ですが、直前でレンタルサーバーのPHP設定を7.1に変えたりしていたのでその反映に時間がかかったのかなぁと思っています。
こういうケースに該当する場合は少し待ってみたら改善されるかも…。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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();
    }
}

参考サイト

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

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だけで良くない?

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Laravel]保存した画像が404エラーで表示されない

問題

画像を取得して表示させようとしたときに、データを取得してくることまではできたのですが、表示すると404エラーがでてきて、パスは間違っていないのに、表示できませんでした。

開発環境
PHP :7.2.15
Laravel :5.6

画像の取得、表示については公式リファレンスや他の記事等で書いてあることを参考にしていたのですが、大まかには以下の流れです。
無題 3.jpg

解決方法

画像自体のパスは間違っていなかったので、「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.config

Storageのシンボリックリンクを変更します。↓

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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む