Issue running setup in production, from the browser
noogen opened this issue · 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?
entirely possible.
I am leaning toward just adding a note in the installation docs NOT to change from local to production until after installed, for those who are knowledgeable enough to have changed this in the .env