BillingTrack icon indicating copy to clipboard operation
BillingTrack copied to clipboard

Issue running setup in production, from the browser

Open noogen opened this issue 2 years ago • 2 comments

This is a common issue to all Laravel projects. The following error occur when running site.example/setup in the browser with "APP_ENV=production" [2022-04-22 15:34:42] production.ERROR: Undefined constant "STDIN" {"exception":"[object] (Error(code: 0): Undefined constant \"STDIN\" at /home/*/*/vendor/symfony/console/Helper/QuestionHelper.php:113)

This is because, when running Laravel migration in production, the following question will be asked in the terminal.

php artisan migrate:fresh --seed
**************************************
*     Application In Production!     *
**************************************

 Do you really wish to run this command? (yes/no) [no]:

Obviously, "STDIN" would not exists when following the instruction by going through site.example/setup in the browser.

Additional context Ref: https://stackoverflow.com/questions/24223286/artisancallmigrate-not-working-after-upgrading-laravel-to-4-2

I'm not sure how to overcome this. My only suggestion is to add additional step like I did. I ran setup with APP_ENV=local, then change this value to APP_ENV=production afterward.

Suggestion: Write code to check APP_ENV value and output an error in browser telling the user to do this step if setup has not been ran?

noogen avatar Apr 22 '22 17:04 noogen