Το Laravel δεν διαβάζει .env αρχείο μετά την αλλαγή

Laravel Is Not Reading



Πρόβλημα

Αυτό είναι ένα αρκετά κοινό ζήτημα που εμφανίζεται μεταξύ των νέων προγραμματιστών Laravel.

Πολλοί άνθρωποι προσπαθούν να ενημερώσουν το αρχείο .env για να δουν ότι όταν ανανεώνουν την εφαρμογή τους, οι τιμές διαμόρφωσης .env δεν εμφανίζονται.







Και το πιο ενδιαφέρον είναι ότι αρκετά συχνά, αυτό θα εμφανιστεί αφού αναβαθμίσετε την έκδοση Laravel.



Έτσι, για παράδειγμα, θα το έχετε στο αρχείο .env:



DB_DATABASE=laraveldb
DB_USERNAME=laraveluser

Στη συνέχεια, φυσικά, μέσα στο αρχείο config/database.php θα έχετε αυτό:





'Mysql'=> [
' βάση δεδομένων '=>env(‘DB_DATABASE’,'μήρος'),
'Όνομα χρήστη'=>env(‘DB_USERNAME’,'μήρος'),
]

Το forge εδώ σημαίνει προεπιλεγμένες τιμές. Αυτό σημαίνει ότι αυτές οι τιμές θα χρησιμοποιηθούν σε περίπτωση που δεν έχετε παράσχει το δικό σας DB_DATABASE και DB_USERNAME τιμές μέσα στο αρχείο .env. Αυτές οι πληροφορίες θα σας φανούν χρήσιμες σε λίγο.

Τώρα, πώς γνωρίζετε ότι αντιμετωπίζετε αυτό το συγκεκριμένο πρόβλημα είναι εάν αντιμετωπίζετε την ακόλουθη εξαίρεση:



PDOException: SQLSTATE[HY000] [1045]Αποκλείστηκε η πρόσβαση για χρήστης ‘Lar’@‘localhost’
( χρησιμοποιώντας Κωδικός πρόσβασης : ΟΧΙ )

Αυτό δείχνει ξεκάθαρα ότι η εφαρμογή Laravel τραβάει την προεπιλεγμένη τιμή από την δική σας config/database.php αρχείο και όχι από το .env.

Πριν κάνετε οτιδήποτε άλλο, μπορείτε επίσης να προσπαθήσετε να επαληθεύσετε αυτό το ζήτημα χρησιμοποιώντας επίσης το php artisan tinker:

>>>env(‘DB_DATABASE’)
=> μηδενικό
>>>getenv(‘DB_DATABASE’)
=> ψευδής
>>>διαμόρφωση(' βάση δεδομένων . συνδέσεις.mysql. βάση δεδομένων ')
=>μήρος
>>>δ.δ($ _ENV)
[]

Συχνά θα δείτε ότι το να κάνετε το παρακάτω πράγμα δεν θα κάνει τη διαφορά. Ωστόσο, οι προγραμματιστές προσπαθούν να δοκιμάσουν τη διαμόρφωσή τους εκτελώντας μια εντελώς νέα εγκατάσταση Laravel και απλά αντιγράφοντας τον παλιό φάκελο εφαρμογών. Δεν εκτελούν καμία εγκατάσταση πακέτων συνθέτη ή κάνουν οτιδήποτε άλλο.

Αν δεν είστε σε Linux (θα σας πω γιατί λίγο αργότερα), δεν θα δείτε αλλαγές.

Λύση

Όπως πάντα, υπάρχουν πολλά πράγματα που μπορείτε να κάνετε για να προσπαθήσετε να λύσετε αυτό το πρόβλημα, αλλά μερικά από αυτά είναι πιο πιθανό να πετύχουν.

Εκκαθαρίστε την προσωρινή μνήμη διαμόρφωσης

Πρώτα απ 'όλα, εάν δεν το έχετε κάνει, πρέπει να διαγράψετε την προσωρινή μνήμη ρυθμίσεων, προτού μπορέσετε να κάνετε οτιδήποτε άλλο.

Επειδή ο κώδικάς μας χρησιμοποιεί τόσες πολλές βιβλιοθήκες στις μέρες μας, αναγκαζόμαστε να αποθηκεύσουμε προσωρινά στοιχεία για να έχουμε γρήγορη πρόσβαση σε αυτά κατά τη διάρκεια του χρόνου εκτέλεσης.

Προσωπικά είχα προβλήματα με αυτό σε Windows και Mac, ωστόσο, παρατήρησα ότι για κάποιο λόγο, στο Linux (Ubuntu) αυτά τα αρχεία διαμόρφωσης είτε διαγράφονται με κάποιο είδος γάντζου είτε δεν αποθηκεύονται καθόλου, επειδή μπόρεσα φορτώστε ξανά την εφαρμογή με νέες τιμές .env χωρίς να κάνετε τα εξής.

Βεβαιωθείτε ότι έχετε διαγράψει την προσωρινή μνήμη διαμόρφωσης εκτελώντας τις ακόλουθες εντολές:

php artisan config:κρύπτη
php artisan config:Σαφή

Ελέγξτε για κενά σημεία στο αρχείο .env

Η επόμενη λύση είναι να έχετε λευκά κενά μέσα στο αρχείο .env. Και αυτό αν οι περισσότεροι άνθρωποι αποτύχουν και αρχίσουν να σκίζουν τα μαλλιά τους.

Είναι πολύ εύκολο να το χάσετε, αλλά ως παράδειγμα αυτό που θα μπορούσατε να έχετε στο αρχείο .env είναι κάτι σαν αυτό:

ΟΝΟΜΑ ΙΣΤΟΣΕΛΙΔΑΣ=Η εφαρμογή μου Laravel

Αυτό από μόνο του δεν θα λειτουργήσει αφού τα λευκά κενά θα καταστρέψουν το αρχείο .env.

Αυτό που πρέπει να κάνετε είναι να τυλίξετε τις τιμές σας μέσα στα εισαγωγικά όπως αυτό:

ΟΝΟΜΑ ΙΣΤΟΣΕΛΙΔΑΣ=Η εφαρμογή μου Laravel

Αυτή τη φορά όλα πρέπει να λειτουργήσουν μια χαρά.

Απλώς φροντίστε να καθαρίζετε την προσωρινή μνήμη ρυθμίσεων κάθε φορά που κάνετε μια αλλαγή. Μπορούμε να το κάνουμε όπως πριν:

php artisan config:κρύπτη
php artisan config:Σαφή