質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6015閲覧

PHPの認証ライブラリ Sentinelにつきまして

pegy

総合スコア243

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/15 07:15

phpのライブラリで認証を実装することができるものでSentinelというものを試しに実装してみようと思い、参考サイトを見ながら導入を進めてみました。

  1. 今回はフレームワークを利用せずにNativePHPで実装をしようと試しております。またMAMP環境での実装となります。
  2. PHP Ver:7.3.8
  3. MYSQL Ver:5.7.26

参考サイトにあるphp ./src/tuto.php直前まで実行できたのですが、本コードを実行すると以下のようなエラーが出力されてしまいます。

PHP

1//ini_set('display_errors', 1)の結果 2Fatal error: Uncaught Error: Call to undefined method Illuminate\Events\Dispatcher::fire() in /Applications/MAMP/htdocs/textile/vendor/cartalyst/support/src/Traits/EventTrait.php:127 Stack trace: #0 /Applications/MAMP/htdocs/textile/vendor/cartalyst/sentinel/src/Sentinel.php(169): Cartalyst\Sentinel\Sentinel->fireEvent('sentinel.regist...', Array) #1 /Applications/MAMP/htdocs/textile/vendor/cartalyst/sentinel/src/Native/Facades/Sentinel.php(97): Cartalyst\Sentinel\Sentinel->register(Array) #2 /Applications/MAMP/htdocs/textile/src/tuto.php(29): Cartalyst\Sentinel\Native\Facades\Sentinel::__callStatic('register', Array) #3 {main} thrown in /Applications/MAMP/htdocs/textile/vendor/cartalyst/support/src/Traits/EventTrait.php on line 127

これを読み解くと依存しているIlluminateの方でDispatcherクラスのfireクラスで構文エラーが発生しているように読めるのですが、参考サイトにあるように適切にcomposer.jsonを以下の通りupdateしており、指定されたilluminateディレクトリはvendor直下に存在しており、特に設定にも問題はないように思われます。

Json

1{ 2 "require": { 3 "cartalyst/sentinel": "^2.0", 4 "cartalyst/support": "~1.0", 5 "illuminate/database": "~5.0", 6 "illuminate/events": "^5.2", 7 "illuminate/http": "~5.0", 8 "illuminate/support": "~5.0", 9 "php": ">=5.4.0", 10 "paragonie/random_compat": "~1.1" 11 } 12}

また、SOURCE ./vendor/cartalyst/sentinel/schema/mysql-5.6+.sql;も適切に読み込まれており、PHPMYADMINでテーブルが作成されていることも確認しております。

記事が5年前で少し古いところはあるのですが、Native PHPで導入する例などを見つけることができずここで行き詰ってしまいました。どなたか知見のある方がいればアドバイスをお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これを読み解くと依存しているIlluminateの方でDispatcherクラスのfireクラスで構文エラーが発生しているように読めるのですが、

違います。
Illuminate\Events\Dispatcher に fire()メソッドが存在しないというエラーです。

[5.8] Remove fire methodを読む限り
Illuminate\Events\Dispatcher::fire()は既に存在しないメソッドなので、想定している古いバージョンがインストール出来ていないとか読み込めていないとかそういう感じの理由じゃないですかね。

ただ、さすがに記事も使用しているバージョンも古すぎるので、そんなところで消耗するよりは
公式ドキュメント
のINTEGRATIONの項のNativeのあたりを参考にして使ってみるのが良いかと思いますよ。

投稿2021/06/15 07:56

tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pegy

2021/06/17 01:11

ありがとうございます。公式のNativeで進めることができました。 まだまだ、エラーの読み取りが至らずアドバイスありがとうございます。 ちなみに公式もNativeが見つけられず諦めていたのですが、実際に存在しており、根気よく中身を見てくださったんでしょうか?アプローチのコツ等があれば教えてくださると嬉しいです。 よろしくお願い申し上げます。
tanat

2021/06/17 01:28

解決して良かったです。 公式にたどり着くのは特に苦労しなかったのであんまり覚えていませんが、 今再度検索してみた感じだと、(検索順位は最適化による個人差があると思いますが) Sentinel 公式 PHP あたりで検索してみて、 4番目に公式サイトがありそこからでも行けますし、 検索結果一番上のブログ https://am1tanaka.hatenablog.com/entry/2016/03/05/183048 (質問中で参考にされているサイトですが) には最上段に当時最新バージョンの公式サイトへのリンク https://cartalyst.com/manual/sentinel/2.0#native があるので、そこから最新バージョンのタブに進むのが楽ですね。 > [5.8] Remove fire methodを読む限り この辺りの情報はエラーメッセージで検索すると出てくるものです。
pegy

2021/06/18 01:28

大変勉強になりました。 改めて御礼申し上げます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問