🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

1回答

1104閲覧

PHP/Laravel デプロイがエラーになり失敗する。

YukiTani

総合スコア19

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2021/03/01 08:14

編集2021/03/02 09:19

前提・実現したいこと

Herokuにデプロイをしたい。
docker環境でアプリを作りながら学んでいます。
localhost上では、問題なく動かすことができます。

発生している問題・エラーメッセージ

省略 remote: Package phpunit/php-token-stream is abandoned, you should avoid using it. No replacement was suggested. remote: Generating optimized autoload files remote: > Illuminate\Foundation\ComposerScripts::postAutoloadDump remote: > @php artisan package:discover --ansi remote: remote: In AppServiceProvider.php line 26: ←エラー箇所 remote: remote: Class "App\Providers\Schema" not found ←エラー箇所 remote: remote: remote: Script @php artisan package:discover --ansi handling the post-autoload-dump event returned with error code 1 remote: ! WARNING: A post-autoload-dump script terminated with an error remote: remote: ! ERROR: Dependency installation failed! remote: ! remote: ! The 'composer install' process failed with an error. The cause remote: ! may be the download or installation of packages, or a pre- or remote: ! post-install hook (e.g. a 'post-install-cmd' item in 'scripts') remote: ! in your 'composer.json'. remote: ! remote: ! Typical error cases are out-of-date or missing parts of code, remote: ! timeouts when making external connections, or memory limits. remote: ! remote: ! Check the above error output closely to determine the cause of remote: ! the problem, ensure the code you're pushing is functioning remote: ! properly, and that all local changes are committed correctly. remote: ! remote: ! For more information on builds for PHP on Heroku, refer to remote: ! https://devcenter.heroku.com/articles/php-support remote: ! remote: ! REMINDER: the following warnings were emitted during the build; remote: ! check the details above, as they may be related to this error: remote: ! - A post-autoload-dump script terminated with an error remote: remote: ! Push rejected, failed to compile PHP app. remote: remote: ! Push failed remote: ! remote: ! ## Warning - The same version of this code has already been built: b38902e5fb735380a245d461249103b3034a9fcf remote: ! remote: ! We have detected that you have triggered a build from source code with version b38902e5fb735380a245d461249103b3034a9fcf remote: ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch. remote: ! remote: ! If you are developing on a branch and deploying via git you must run: remote: ! remote: ! git push heroku <branchname>:main remote: ! remote: ! This article goes into details on the behavior: remote: ! https://devcenter.heroku.com/articles/duplicate-build-version remote: remote: Verifying deploy... remote: remote: ! Push rejected to my-laravel-app-super. remote: To https://git.heroku.com/my-laravel-app-super.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/my-laravel-app-super.git'

該当のソースコード

php

1my-laravel-app/app/Providers/AppServiceProvider.php 2 3<?php 4 5namespace App\Providers; 6 7use Illuminate\Support\ServiceProvider; 8use Illuminate\Support\Facades\Schema;   ←追加 9 10class AppServiceProvider extends ServiceProvider 11{ 12 /** 13 * Register any application services. 14 * 15 * @return void 16 */ 17 public function register() 18 { 19 // 20 } 21 22 /** 23 * Bootstrap any application services. 24 * 25 * @return void 26 */ 27 public function boot() 28 { 29 Schema::defaultStringLength(191);    ←追加 30 } 31}

試したこと

Aの参考記事をみながらherokuへデプロイをしていました。
現状herokuへアプリを作成してありますが、500 Server Errorにより開けない状態になっています。

1.Heroku Procfileを作成する
記述)web: vendor/bin/heroku-php-apache2 public/

2.varchar型の文字数を191に制限
記述)
use Illuminate\Support\Facades\Schema; ←追記してもエラー解消できません。
Schema::defaultStringLength(191);

3.githubdesktopからherokuに変更をプッシュする(すべてコミット済み)

4.$ git push heroku main
→エラーになる。

【Herokuへデプロイするための環境構築】
前提で書いた通り500 Server Errorだったので、Cの記事を参考に再度API生成を行った。
ログインすると、500 Server Errorだったので、
heroku run php artisan migrate
→表示されるようになりました。

git push heroku masterをするとエラー解消されない。
他の方法を模索しようと思います。

【参考記事】

A) https://qiita.com/tamappe/items/a175596e9aec725e1d2d
https://qiita.com/rope19181/items/07d556715a3a4f6191bd

B) https://teratail.com/questions/96802

Herokuへデプロイするための環境構築
C)https://www.sejuku.net/blog/tutorial/111347

補足情報(FW/ツールのバージョンなど)

heroku 7.49.1
docker環境
Laravel Framework 7.30.4
プッシュなどはgithub desktop使用
heroku-repo 1.0.14

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

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

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

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

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

Lulucom

2021/03/01 08:31

そのエラーはローカル開発環境でも発生しないでしょうか?Herokuにデプロイする前に、ローカルでエラーを解決させましょう。
YukiTani

2021/03/01 09:27 編集

ローカル開発環境では、問題なく動かすことができ、エラーも発生していません。
Lulucom

2021/03/01 11:20

その変更はmasterブランチにcommitされていますか?
YukiTani

2021/03/01 14:51

commitしています。 use Illuminate\Support\Facades\Schema;を一度削除しmasterブランチにコミットをして、再度同じコードを書きmasterブランチにコミットをしました。やはり、その後もgit push heroku masterをコマンドを打つと同じエラーが表示されてしまいます。
Lulucom

2021/03/01 15:16 編集

Herokuにプッシュ済みのコミットを、ローカルでresetしたりamendしてしまったということはありませんか?
YukiTani

2021/03/01 15:21

どちらもやっていません。 いまmigratinとは関係ないと思いましたが、$ php artisan migrate:freshをして、すべてのテーブルをドロップしてから再びマイグレーションしてみましたが、同じエラーが発生しました。 use Illuminate\Support\Facades\Schema;と記述してあるのに、今回のエラーになってしまう原因が分かりません。
Lulucom

2021/03/01 15:28

Gitの問題だとは思っているのですが難しいですね・・・
Lulucom

2021/03/01 15:35

ローカル、Herokuともにブランチはmainではなくmasterを使っているのですよね。
YukiTani

2021/03/01 15:42

mainブランチになっています。 https://gyazo.com/bc11805fe10b861b63dd808d48c23952 use Illuminate\Support\Facades\Schema; Schema::defaultStringLength(191);を削除して、記述なしでcommitからのgit push heroku masterをすると記述ありの時と、同じエラーになります。 remote: In AppServiceProvider.php line 26: remote: Class "App\Providers\Schema" not found
Lulucom

2021/03/01 15:44

git push heroku master ではなく git push heroku main でいけるのかな・・・
YukiTani

2021/03/01 16:44

ターミナルでコマンドを打ち込まず、github desktopでローカルはプッシュなどやっています。
Lulucom

2021/03/02 00:25 編集

GitHub DesktopからそのHerokuのGitリポジトリへはプッシュできるのでしたら、ターミナルでコマンドを使わず、今後もGitHub Desktopからプッシュすれば良いかなとは思いました。 そうではなく、そのHerokuのGitリポジトリへのプッシュは、GitHub Desktopも含め、まだ1度も成功していないということでしょうか。 でしたら、git push heroku main:master をまずは試してみるのはいかがでしょうか。 それでも駄目なら、そのHerokuのGitリポジトリをリセットするのはいかがでしょうか。以下のヘルプの後半にリセットする方法が書かれていました。もしご自身専用のHerokuアプリなら誰にも相談せずにリセットしてしまって構わないのではないかと思いました。 https://help.heroku.com/O0EXQZTA/how-do-i-switch-branches-from-master-to-mai
YukiTani

2021/03/02 02:37 編集

ありがとうございます。 現状herokuへアプリを作成してありますが、500Server Errorにより開けない状態になっています。 500Server Errorを解決するために、 →アプリフォルダ直下にProcfileを作成、編集  → AppServiceProvider.phpに追記 (1度目のエラーの際にuse Illuminate\Support\Facades\Schema;を追記忘れていたので、編集しました。) → herokuに変更をプッシュ → エラー アドバイス頂いて行ったコマンド heroku repo:reset -a my-laravel-app-super  git push heroku main:master 同じエラーが発生 リセットは成功 https://gyazo.com/6a16b61b2a0c9669612298579b15cd7f
Lulucom

2021/03/02 02:44 編集

Herokuアプリが500 Server Errorになるのはプッシュとデプロイが失敗しているからだと思います。 最後の画像ですが、Heroku Repoプラグインをインストールせずに実行してしまいましたか? Did you mean pg:reset?(pg:resetを意味してましたか?)と聞かれ、y (Yes)と答えてしまったために、pg:reset(Heroku Postgresのデータベースをリセットするコマンド)が実行されてしまったようですね。 Heroku Repoプラグインをインストールしたら、HerokuアプリのGitリポジトリをリセットできるようになるかと思います。リセット後は git push heroku main が良いと思います。
YukiTani

2021/03/02 02:58

Heroku Repoプラグインをインストールしていませんでした。 heroku plugins:install heroku-repo (インストール完了) heroku repo:reset -a my-laravel-app-super (再びリセット) →Resetting Git repository for ⬢ my-laravel-app-super... done (Y/Nの質問なしで、完了) git push heroku main → 同じエラーが発生
Lulucom

2021/03/02 03:00

そうですか・・・同じエラーと書かれていますがどちらのエラーでしょうか。
YukiTani

2021/03/02 03:11

同じエラーとは、本文に書いてあるエラーのことです。 いま行っていたことは、 bootstrap/cache以下.gitignore以外の「config.php」「packages.php」「services.php」などを削除 {コンテナ]composer dump-autoload 改善できませんでした。
YukiTani

2021/03/02 06:37

heroku config:setも実行をしたら、一部のページ(ログイン、新規登録)のみ表示されるようになりました。ログインに成功すると500 Server Errorになります。CSS,bootstrap関係を確認してみます。
Lulucom

2021/03/02 08:18 編集

デプロイはいつの間にか成功したということでしょうか? そうではなくて、過去にデプロイ成功していたバージョンが動いているということでしょうか。 エラー調査はHeroku上のLaravelのログファイルにエラーを出力させて確認すべきですが、本番稼働環境でなければ、より手っ取り早い方法としては、HerokuアプリのAPP_DEBUG環境変数をtrueに設定して動かしてみるとエラー画面を表示できます。エラーを確認したらAPP_DEBUG環境変数はすぐに削除してください。
YukiTani

2021/03/02 08:39

今まで一回も成功していないと思っていましたが、いつの間にかデプロイが出来ていたみたいです。 こういうエラーを表示させる方法があるんですね。勉強になります。 エラー https://gyazo.com/7aac707906e01df1df9ec2252c3a9f01 エラー指摘箇所 https://gyazo.com/6f3cec6cf056d1cd134415ab0dab5537 UserControllerのstoreアクションの箇所も問題なさそうです。 https://gyazo.com/8b56cb28f5a535d179938f594966a4fa
Lulucom

2021/03/02 08:45

usersテーブルがありませんというエラーです。Herokuアプリのデーターベースをマイグレートしていないのではないでしょうか。
YukiTani

2021/03/02 09:05 編集

heroku run php artisan migrateやっていませんでした、、 いま無事に表示させることができました。 git push heroku mainを打ち込むと、エラーは解消されていません。 しかし現状問題なく動いているので、このまま開発を進めていきたいと思います。 昨日から沢山のアドバイス、多方面からのアプローチの方法、とても勉強になりました。 ありがとうごいました。
Lulucom

2021/03/02 09:18 編集

いえいえ、やはり当初のデプロイエラーは未解決なのですね。力不足ですみません。 (Herokuアプリを新しく作った方が早いのかもしれませんね) あと、ここで長いやり取りをするのも良くありません。ここは追記・修正の依頼専用だからです。怒られてしまうかも・・・
guest

回答1

0

自己解決

タイトルに書いたエラーは、解決でなかったので、他の方法を模索して行きたいと思います。

前提で書いた通り500 Server Errorだったので再度API生成を行った。
【Herokuへデプロイするための環境構築】
ログインすると、500 Server Errorだったので、
heroku run php artisan migrate
→表示されるようになりました。

git push heroku master
→エラー解消されない

投稿2021/03/02 09:21

YukiTani

総合スコア19

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問