Laravel 5.2 env फ़ाइल को नहीं पढ़ रहा है


110

Laravel 5.2 में अपग्रेड करने के बाद, मेरे किसी भी .envफ़ाइल मान को नहीं पढ़ा जा रहा है। मैंने अपग्रेड निर्देशों का पालन किया ; मेरे कॉन्फिग फाइल में से कोई भी नहीं बदला गया है। वे सभी पिछले संस्करण में ठीक काम कर रहे थे, 5.1.19

.env जैसे मान शामिल हैं

DB_DATABASE=mydb
DB_USERNAME=myuser

config/database.php शामिल

'mysql' => [
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
]

मुझे यह त्रुटि मिली:

PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)

स्पष्ट रूप से मेरे env config में नहीं खींच रहा है। यह मेरी हर एक फाइल को प्रभावित कर रहा है, जिसमें थर्ड पार्टी जैसे बग्सनाग भी शामिल है।

मैंने भी कोशिश की

php artisan config:clear
php artisan cache:clear

अपडेट करें

कोशिश कर रहे हैं php artisan tinker

>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]

मैंने लारवेल 5.2 की एक नई प्रति स्थापित करने की कोशिश की है। मैंने मूल रूप से केवल अपने appफ़ोल्डर में प्रतिलिपि बनाई है ; कोई अतिरिक्त संगीतकार पैकेज शामिल नहीं हैं। अभी भी एक ही मुद्दा रहा है। मेरे पास उसी सर्वर पर अन्य लारवेल 5.2 परियोजनाएं हैं जो ठीक काम कर रही हैं।


1
क्या आप वाकई .env फ़ाइल का नाम केवल .env है? नहीं .env.example?
जेम्स इलियट

एंड्रयू आप फोर्ज इंटरफेस द्वारा .env फाइल को एडिट कर रहे हैं या अपलोड कर रहे हैं?
मार्क डेविडसन

@JamesElliott हाँ यह है.env
andrewtweber

1
या आप इसे स्थानीय स्तर पर चला रहे हैं? यदि आपका कारीगर सेवा के तहत चल रहा है तो आपको इसे केवल उसी स्थिति में पुनः आरंभ करने की आवश्यकता है जो मामला हो सकता है।
मार्क डेविडसन

@MarkDavidson कमांड लाइन में vi के माध्यम से इसे संपादित कर रहा है, और यह एक पूर्ण सर्वर पर नहीं है
andrewtweber

जवाबों:


91

आधिकारिक लारावेल 5.2 अपग्रेड नोट्स से:

यदि आप config:cacheपरिनियोजन के दौरान कमांड का उपयोग कर रहे हैं , तो आपको यह सुनिश्चित करना चाहिए कि आप केवल envअपने कॉन्फ़िगरेशन फ़ाइलों के भीतर से फ़ंक्शन को कॉल कर रहे हैं , और आपके एप्लिकेशन में कहीं और से नहीं।

यदि आप envअपने एप्लिकेशन के भीतर से कॉल कर रहे हैं , तो यह दृढ़ता से अनुशंसा की जाती है कि आप अपनी कॉन्फ़िगरेशन फ़ाइलों में उचित कॉन्फ़िगरेशन मान जोड़ें और envइसके बजाय उस स्थान से कॉल करें , जिससे आप अपने envकॉल को configकॉल में परिवर्तित कर सकें।

संदर्भ: https://laravel.com/docs/5.2/upgrad#upgrad-5.2.0


36
php artisan config:cacheमेरे लिए इसे हल किया - कुछ और मदद नहीं की थी। नहीं भी php artisan config:clear- धन्यवाद!
कैर

36
लारवेल 5.3 php artisan config:clearएकमात्र ऐसी चीज है, जो मेरे लिए काम करती है
चपरासी

9
लारवेल 5.4 - एक वीपीएस पर तैनात: php artisan config:clearमेरे लिए काम किया। मैंने कॉन्फिगर नहीं किया: कैश पहले तो यह थोड़ा अजीब लग रहा था कि मुझे कैशे क्लियर करना था।
एंटोनियो


सुनिश्चित करें कि आप फ़ाइल के .envबजाय संपादन कर रहे हैं.env.example
कॉनर लीच

84

यदि आपके किसी भी .envचर में सफेद स्थान है, तो सुनिश्चित करें कि आप उन्हें डबल-कोट्स में लपेटते हैं। उदाहरण के लिए:

SITE_NAME="My website"

परीक्षण से पहले अपना कैश साफ़ करना न भूलें:

php artisan config:cache
php artisan config:clear

हाँ, यह काम कर रहा है। .envफ़ाइल में किसी भी मूल्य को बदलने के बाद php artisan config:cache & php artisan config:clearकमांड चलाएं । यह काम करेगा।
चंदन शर्मा

41

वाह। सुखद दुख। ऐसा इसलिए है क्योंकि मेरे पास इसमें एक जगह के साथ एक एनवी मूल्य था, जो उद्धरणों से घिरा नहीं था

यह

SITE_NAME=My website

इसमें बदलाव किया गया

SITE_NAME="My website"

ठीक कर दिया। मुझे लगता है कि यह लार्वा 5.2 के साथ करना था अब 1.1.1 से 2.1.0 तक vlucas / phpdotenv को अपग्रेड करना


ऐसा ही लगता है - ऐसा लगता है कि रिक्त स्थान .env5.2 में जहाँ 5.1 में यह नहीं था के तहत मुद्दों का कारण बनता है ।
थोमथोम

5
और यह लारवेल के साथ मेरी (कई) बगबियर्स में से एक है: इसे कभी-कभी चुपचाप अनदेखा करने और विभिन्न प्रकार की कॉन्फ़िगरेशन और / या अन्य प्रकार की त्रुटियों को स्वीकार करने की आदत है, जिसमें कोई संकेत नहीं है कि कुछ भी गलत हुआ है। यह देखते हुए, यह एक "सुविधा" हो सकती है phpdotenv, लेकिन लारवेल को अभी भी पता है .envकि एक फाइल को शामिल करने की आवश्यकता है, और यह सफल नहीं था, लेकिन किसी को बताने की जहमत नहीं उठाता।
dKen

2
मैं पहले से ही कुछ मूर्खतापूर्ण समय पर घंटों बर्बाद कर चुका हूं। मुझे और बर्बाद करने से रोकने के लिए धन्यवाद!
जेनस्की

29

मेरे लिए इस क्रम में यह काम किया है:

php artisan config:cache
php artisan config:clear
php artisan cache:clear

और मैंने बिना किस्मत के सभी तरह की कोशिश की है।


2
इस आदेश ने डिबगिंग के कुछ घंटों के बाद मेरी समस्या को हल कर दिया।
मिनियन

मेरी ज़िंदगी बचाई। टी.के.एस। लेकिन आईडी समझ में क्यों नहीं आया।
मेटुस गैलासो

इस आदेश ने मुझे बचा लिया। धन्यवाद
असद उल्लाह

आप इंटरनेट अजनबी की तरह धन्यवाद, यह हो गया!
एडुआर्डो

अगर आपको इस उत्तर पर हर बार $ 1 प्राप्त होता है, तो आप पहले से ही समृद्ध होंगे। धन्यवाद!
अल्टिन

25

मेरे पास एक समान मुद्दा था config/services.phpऔर मैंने उपयोग config clearऔर optimizeआदेशों को हल किया :

php artisan config:clear
php artisan optimize

24

मेरे लिए निम्नलिखित काम किया

- php artisan config:cache
- php artisan config:clear
- php artisan cache:clear


11

स्थानीय पर्यावरण पर मेरा एक ही मुद्दा था, मैंने हल कर दिया

  1. php कारीगर विन्यास: स्पष्ट
  2. php कारीगर विन्यास: कैश
  3. और उसके बाद php कारीगर की सेवा को रद्द करें, और फिर से शुरू करें।

11

आप निम्नलिखित अनुशंसा द्वारा समस्या का समाधान कर सकते हैं

सिफारिश 1:

आपको कॉन्फ़िगरेशन फ़ाइलों के माध्यम से .env फ़ाइल का उपयोग करना होगा, इसका मतलब है कि आप कॉन्फ़िगरेशन फ़ाइलों (जैसे /config/app.php या /config/database.php) से .env फ़ाइल को पढ़ने के लिए requrested हैं, तो आप कॉन्फ़िगरेशन का उपयोग कर सकते हैं। आपके प्रोजेक्ट के किसी भी स्थान से फ़ाइलें।

सिफारिश 2: दोहरे उद्धरण के भीतर अपना env मान सेट करें

 GOOGLE_CLIENT_ID="887557629-9h6n4ne.apps.googleusercontent.com"
 GOOGLE_CLIENT_SECRET="YT2ev2SpJt_Pa3dit60iFJ"
 GOOGLE_MAP="AIzaSyCK6RWwql0DucT7Sl43w9ma-k8qU"

अनुशंसा 3: किसी भी कॉन्फ़िगरेशन या एनवी मान को बदलने के बाद निम्न कमांड अनुक्रम बनाए रखें।

 composer dump-autoload
 composer dump-autoload -o

 php artisan clear-compiled
 php artisan optimize

 php artisan route:clear
 php artisan view:clear

 php artisan cache:clear
 php artisan config:cache
 php artisan config:clear

सिफारिश 4: जब सिंटैक्स 1 काम नहीं कर रहा है तो आप एक और सिंटैक्स 2 आज़मा सकते हैं

   $val1 = env('VARIABLE_NAME');     // syntax1
   $val2 = getenv('VARIABLE_NAME');  // syntax2
   echo 'systax1 value is:'.$val1.' & systax2 value is:'.$val2;

सिफारिश 5: जब आपके उपयोगकर्ताओं की संख्या अधिक / अधिक है तो आपको सर्वर कॉन्फ़िगरेशन में संबंधित मेमोरी का आकार बढ़ाना होगा ।

सिफारिश 6: जब आप पढ़ रहे हैं तो डिफ़ॉल्ट संभावित मान सेट करें। चर चर।

 $googleClinetId=env("GOOGLE_CLIENT_ID","889159-9h6n95f1e.apps.googleusercontent.com");
 $googleSecretId=env("GOOGLE_CLIENT_ID","YT2evBCt_Pa3dit60iFJ");
 $googleMap=env("GOOGLE_MAP","AIzaSyCK6RUl0T7Sl43w9ma-k8qU");

11

जब आप कमांड php artisan config:cacheनिकालते हैं तो यह सभी envचर मिटा देगा और env()शून्य मान देगा, कमांड के बाद चलने की कोशिश करें और वहाँ env()फिर से अपने सभी envचर को पकड़ना शुरू करें

php artisan config:clear

जादू की तरह यह मेरे लिए काम किया - महान जवाब!
डेविड पार्टीका

9

मैं उन्नयन के निर्देशों में यह याद किया:

अपनी app.phpकॉन्फ़िगरेशन फ़ाइल में एक एनवी कॉन्फ़िगरेशन विकल्प जोड़ें जो निम्न की तरह दिखता है: 'env' => env('APP_ENV', 'production')

इस लाइन को जोड़ने से स्थानीय .envफ़ाइल को सही ढंग से पढ़ा जा सकता है।


1
मुझे लगता है कि मुझे वही त्रुटि मिली, क्योंकि मेरा ऐप लारवेल 4 था, फिर 5.0 पर अपग्रेड किया गया, फिर 5.1 तक, आदि। संभवतः मेरे ऐप में इस मूल्य को जोड़ने में चूक हुई। एफपी। मुझे बहुत समय बचाने के लिए धन्यवाद। यहाँ एक उत्थान है!
ब्रूनो पी। किनोशिता

8

सादगी शक्ति है:

php artisan config:cache

आपको मिल जायेगा:

कॉन्फ़िगरेशन कैश साफ़ किया गया!

कॉन्फ़िगरेशन सफलतापूर्वक कैश्ड!


6

एक ही बात तब होती है जब: पोर्ट आपके स्थानीय .env में होता है

फिर से डबल कोट्स ट्रिक करता है

APP_URL="http://localhost:8000"

और फिर

php artisan config:clear


4

इसके अलावा @andrewtweber ने जो सुझाव दिया है, वह सुनिश्चित करें कि आपके पास कुंजी = और मान के बीच रिक्त स्थान नहीं है जब तक कि यह उद्धरण के बीच नहीं है

.env फ़ाइल उदा:

...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...

सेवा:

...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...

3

मैं अपने स्थानीय पर इसी समस्या में भाग गया, और मैंने यहां सभी उत्तरों की कोशिश की है लेकिन कोई फायदा नहीं हुआ। केवल इसने मेरे लिए काम किया, php artisan config:clearऔर restart server। एक जादू की तरह काम करता है!


4
@RameshMhetre कोशिश करते हैं php artisan config:cache, php artisan config:clearतबphp artisan cache:clear
Dexter Bengil

2

मैंने कमांड का उपयोग करके एक नई कुंजी उत्पन्न करने वाली इस समस्या को हल किया: php artisan key:generate


2

यदि आपने कॉन्फिगर कॉल किया है: स्थानीय विकास के दौरान कैश, आप बूटस्ट्रैप / कैश / config.php फ़ाइल को हटाकर इसे पूर्ववत कर सकते हैं। और यह मेरे लिए काम है।


2

यदि आपने कॉन्फिगर कॉल किया है: स्थानीय विकास के दौरान कैश, आप बूटस्ट्रैप / कैश / config.php फ़ाइल को हटाकर इसे पूर्ववत कर सकते हैं। और यह मेरे लिए काम है।

@ पायल पांडव ने ऊपर टिप्पणी दी है।

मैं एक साधारण वर्कअराउंड बताना चाहता हूं। बस बूटस्ट्रैप / कैश / फ़ोल्डर में config.php फ़ाइल को संपादित करें। और साख बदलो। इसने मेरे लिए काम किया। कृपया इस फ़ाइल को हटाएं नहीं क्योंकि इसमें उत्पादन वातावरण में अन्य महत्वपूर्ण डेटा हो सकते हैं।


2

मेरे मामले में लार्वा 5.7 env('APP_URL')काम नहीं करता बल्कि config('app.url')काम करता है। अगर मैं नए चर को जोड़ने envऔर कॉन्फ़िगर करने के लिए - यह काम नहीं करता है - लेकिन इसके बाद php artisan config:cacheकाम शुरू होता है।


3
यदि आप विकास के काम पर हैं तो आपको अपने कॉन्‍फ़िगर और मार्गों को कैश नहीं करना चाहिए। सभी कैश को निकालने के लिए आप उपयोग कर सकते हैं:php artisan optimize:clear
ज़ोहैब

@ZohaibHassan देव परिवेश पर विन्यास और मार्गों के लिए कैश को कैसे बंद करें?
कामिल कील्केवस्की

1
इसके बाद के संस्करण आदेश बंद हो जाएगा 1. मार्गों कैश, 2 कॉन्फ़िगर कैश, 3. स्पष्ट विचार 4. स्पष्ट अनुकूलित फ़ाइलें 5. स्पष्ट कैश यदि कोई हो
Zohaib

1
केवल कॉन्फ़िगरेशन के लिए आप इसका उपयोग कर सकते हैं, php artisan config:clearयह आपके कॉन्फ़िगर कैश को साफ़ कर देगा और फिर से उत्पन्न नहीं करेगा और जब आप उत्पादन पर जाएंगे तो आप php artisan config:cacheअपने कॉन्फ़िगरेशन को कैश करने के लिए चला सकते हैं
Zohaib

1

अगर आप इस php artisan config:cacheकमांड को कंसोल पर चलाते हैं तो यह कैश में सभी .env फाइल कंटेंट को स्टोर कर लेगा, इस कमांड के बाद अगर आप किसी भी कंटेंट को .env फाइल में डालेंगे तो यह तब तक उपलब्ध नहीं होगा जब तक आप php artisan config:clearकमांड नहीं चलाते।


1

मैं एक ही समस्या का सामना लार्वा विकास के दौरान बहुत बार करता हूं। कुछ बार एनवी काम करना बंद कर देता है और कोई मूल्य नहीं लौटाता है। वह कारण अलग हो सकता है जो आपकी स्थिति पर निर्भर करता है। लेकिन मेरे मामले में कुछ दिन पहले मैं बस चलाता हूं

 PHP artisan::config:clear

इसलिए इस कमांड का उपयोग सावधानी से करें। क्योंकि यह सभी कॉन्फ़िगर डेटा को अपने कैश के रूप में मिटा देगा। इसलिए उसके बाद, यह किसी भी मूल्य को वापस नहीं करेगा। तो इस स्थिति में, आपको इसे सबसे पहले उपयोग करने की आवश्यकता है यदि आपने PHP कारीगर कॉन्फिग :: क्लियर कमांड चलाया है ।

php artisan config:cache  // it will cache all data 
php artisan config:clear
Configuration cache cleared!

1

मैंने यह अनुभव किया। कारण यह था कि अपाचे (उपयोगकर्ता www-data) फ़ाइल अनुमतियों के कारण .env नहीं पढ़ सकता था। इसलिए मैंने यह सुनिश्चित करने के लिए फ़ाइल अनुमतियों को बदल दिया कि सर्वर (अपाचे) ने फ़ाइल को पढ़ने की अनुमति दी थी। बस वह और उछाल, यह सब अब काम कर रहा था!
अद्यतन: यह
कैसे करना भिन्न होता है, यह निर्भर करता है कि कौन .env फ़ाइल का मालिक है, लेकिन यह मानते हुए कि यह अपाचे www-dataसमूह का है, आप यह कर सकते हैं:

sudo chmod g+r .env

अपनी अनुमति संरचना के आधार पर इसे संशोधित करें।


So i changed the file permissions to ensure that the server (apache) had read permissions to the file.यह वास्तव में गलत दृष्टिकोण है। आपके पास अपैक्स कॉन्फिग फिक्स होनी चाहिए ताकि यह इस साइट को उस मालिक के रूप में पेश करे जो इन फाइलों का मालिक है
Marcin Orlowski

0

मैंने index.phpफ़ाइल में dd / die / डंप करके गलती की । यह सिस्टम कॉन्फ़िगरेशन को पुन: उत्पन्न नहीं करने का कारण बनता है।

बस दृश्य फ़ाइलों में डंप करेंगे। .envफ़ाइल अपडेट में तुरंत बदलाव ।


0

मुझे इससे कुछ समस्याएँ थीं। यह अनुप्रयोग में कहीं न कहीं एक फ़ाइल अनुमति मुद्दा लगता था - .env-file नहीं।

मुझे अपने डॉकटर को रोकना था - पूरे प्रोजेक्ट के लिए अपने स्वयं के उपयोगकर्ता के लिए मालिकाना-अधिकार निर्धारित करने के लिए chown का उपयोग करें - फिर से टॉक शुरू करें

इस बार काम किया।


-1

उपरोक्त सभी की कोशिश की। समाप्त कर रहा है

chmod 666 .env

जो काम किया। यह समस्या मुझे उस ऐप पर क्रॉप करने में लगती है जो मुझे विरासत में मिला था, लेकिन यह हाल के समय में .env.testing जोड़ने के बाद था। रनिंग लारवेल 5.8

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.