cytech / BillingTrack

BillingTrack quote, invoice, workorder management
48 stars 39 forks source link

Issue running setup in production, from the browser #60

Open noogen opened 2 years ago

noogen commented 2 years ago

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 commented 2 years ago

Did a search on past history, this could also be related to: https://github.com/cytech/BillingTrack/issues/6 and https://github.com/cytech/BillingTrack/issues/7 - I have similar issue result. Installation failed but you have to view storage/log/laravel.log error to see the details like I did.

cytech commented 2 years ago

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