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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

843閲覧

Laravel5.1 index.php内にてエラー【さくらレンタルサーバー】

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2017/08/18 22:50

編集2017/08/19 01:42

xamppで開発していたサイトをさくらのレンタルサーバーを借りてそこに移動したのですが、たまに下記のようなエラーが発生します。

local.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function send() on null' in /home/test/www/index.php:56
index.php の50行目から下 $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send();//エラーの56行目 $kernel->terminate($request, $response);

調べてみると「オブジェクトインスタンスが生成されていない」とこういったエラーが出るようなのですが、毎回このエラーが出るわけでもないので、いったいどんな条件ならこういったエラーがでるのか見当もつきません。さくらサーバーはwwwディレクトリにpublicの中身を移さないといけないということらしいので、移してはいるのですが、このあたりに原因があるのでしょうか?

どなかがご存知でしたらご助力お願いいたします。

【追記】
上記エラーが発生する前に、ほぼ必ずTokenMismatchExceptionエラーが出ていました。tokenはすべてのviewファイルに置いているのですが、何か原因があるのでしょうか

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

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

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

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

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

guest

回答2

0

ベストアンサー

根本的な解決?にはなっていないような気がしますが、とりあえずindex.phpのエラーがでることはなくなりました。原因としては追記でも書いた、「csrfトークンエラー」が原因だったみたいです。どうもこのエラーが起きるとセットでindex.phpのエラーが出るみたいだったので、

if ($e instanceof \Illuminate\Session\TokenMismatchException){ session()->flash('csrfError', true); return response()->view('Error'); }

Handler.php内に下記を書くことで、index.phpのエラーが出ることはなくなりました。
viewファイルのErrorはもちろん自前です。

投稿2017/08/19 23:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

Larevel5.1のindex.phpの$response->send()がエラーになることは正常なプログラムではあまりありえないことかと思うので、たまに発生する場合に考えられる点としては以下を検討してみてください。
またさくらレンタルサーバーのPHPのバージョンはデフォルトが5.6系かもしれないので、特別な理由が無ければ7系にの最新になっているか確認した方が良いかと思います。

1.vendorディレクトリのライブラリが不正な場合

composer.lockをアップロードした後に、composer install(またはupdate)を行い、必要に応じてcomposer dump-autoloadを実行

2.cacheがおかしい

php artisan cache:clear、php artisan route:clear、php artisan config:clear等を試してみる

3.レンタルサーバーということで、SFTP等のアップロード中にアクセスした(vendorを除いてアップロードしても結構時間がかかることがあります)

アップロードの完了を待ってからアクセスしてください。

4.他に相乗りしているユーザーの負荷などでさくらレンタルサーバーの挙動が不安定な場合

VPSやより性能の高いプランへの変更を検討してください

投稿2017/08/19 00:40

aro10

総合スコア4106

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

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

退会済みユーザー

退会済みユーザー

2017/08/19 01:26

回答ありがとうございます。vendorディレクトリのライブラリが不正な場合というのは具体的にどういった意味でしょうか?
aro10

2017/08/19 04:36 編集

vendorディレクトリには、composerでインストールするcomposer.jsonに記載されたライブラリとそれが依存する関連ライブラリ一式が保存されます。 よってこれが正しくインストールできていないとLaravelの動作に支障をきたしたり、クラスが見つからないという事が起こることがあります。 TokenMismatchExceptionは主としてformでpost送信する際に、csrfトークンをformの送信データに入れていないとサーバーで受信したときにVerifyCsrfTokenミドルウェアの動作によりおこるエラーです。 formの中でcsrf_field()を使うか、こちらの記事などを参考にしてみてください[Laravelのフォーム送信で「TokenMismatchException in VerifyCsrfToken.php」エラーの対処方法。](http://start-now.link/100/archives/3133)
退会済みユーザー

退会済みユーザー

2017/08/19 09:35

回答ありがとうございます、csrf_field()は全てのformに入っていたので別の原因があるような気がします。調べたところセッションが関係しているようなので、しばらく自分で探してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問