कैसे ठीक करें त्रुटि: laravel.log नहीं खोला जा सका?


185

मैं लार्वा पर वास्तव में बहुत नया हूं, वास्तव में और मैं अपनी पहली परियोजना बनाने की कोशिश कर रहा हूं। किसी कारण से मुझे यह त्रुटि हो रही है (मैंने अभी तक कोडिंग शुरू नहीं की है)

Error in exception handler: The stream or file "/var/www/laravel/app/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/laravel/bootstrap/compiled.php:8423

मैंने पढ़ा है कि यह अनुमति के साथ कुछ करना है, लेकिन chmod -R 775 storageबिल्कुल भी मदद नहीं की है।

अनुमतियां


क्या आप सुनिश्चित हैं कि उस chmod कमांड को चलाने के दौरान आप सही निर्देशिका में हैं? Chmod -R 755 / var / www / लार्वा / ऐप / स्टोरेज को आज़माएँ। इसके अलावा, उपयोगकर्ता और समूह किसके लिए तैयार हैं? कोशिश करें ls -al / var / www / laravel / ऐप / स्टोरेज
रयान लाब

समान परिणाम (मैंने फ़ोल्डर की अनुमति दिखाने के लिए अपने मूल पोस्ट को अपडेट किया)
FRR

: / किसी कारण से यह अभी भी काम नहीं करता है। मैंने पहले इसका उल्लेख नहीं किया था, लेकिन मैं योनि का उपयोग कर रहा हूँ। इसलिए मेरा www फ़ोल्डर VM (एपाचे, php और बाकी सब उस पर चल रहा है) पर है। मुझे यकीन नहीं है कि अगर कुछ के साथ कुछ करना है, लेकिन मुझे लगा कि मैं सिर्फ मामले में इसका उल्लेख करूंगा। (मैं संगीतकार का उपयोग करते हुए वीएम के साथ अपनी परियोजना बना रहा हूं)
एफआरआर

13
वे लोग जो 777 का सुझाव देते हैं, इस वाक्यांश को Google आज़माएँ: "उत्पादन db_password filetype: env inurl: com"
तारासोविच

1
SELINUX को निष्क्रिय करना मेरे लिए काम किया।
प्रकाश पी

जवाबों:


307

777 में कभी भी डायरेक्टरी सेट न करें । आपको निर्देशिका स्वामित्व बदलना चाहिए। इसलिए अपने वर्तमान उपयोगकर्ता को सेट करें जिसे आप स्वामी और वेबसर्वर उपयोगकर्ता (www-data, apache, ...) समूह के रूप में लॉग इन करते हैं। आप यह कोशिश कर सकते हैं:

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

फिर निर्देशिका अनुमति सेट करने के लिए इसे आज़माएँ:

chmod -R 775 storage
chmod -R 775 bootstrap/cache

अपडेट करें:

वेबसर्वर उपयोगकर्ता और समूह आपके वेबसर्वर और आपके OS पर निर्भर करते हैं। यह जानने के लिए कि आपका वेब सर्वर उपयोगकर्ता और समूह निम्नलिखित कमांड का उपयोग करता है। nginx उपयोग के लिए:

ps aux|grep nginx|grep -v grep

अपाचे उपयोग के लिए:

ps aux | egrep '(apache|httpd)'


4
धन्यवाद! संक्षेप में आप यह भी कर सकते हैं:sudo chown -R {your current user}:www-data storage bootstrap/cache
रमेश पारीक

2
@RameshPareek आप सही हैं लेकिन मैं अभी और स्पष्ट होना चाहता था;)
हामिद परचमी

1
यह मेरे लिए काम नहीं करता है। मैं अभी मिलता हूं chown: www-data: illegal group name। निर्देशिका को 777 पर सेट करना केवल एक चीज है जो काम करती है
मैट डी

3
@MattD मुझे लगता है कि मैक पर अपाचे समूह यह _wwwकोशिश है sudo chgrp -R _www bootstrap/cache। इस पोस्ट पर एक नज़र डालना उपयोगी होगा: stackoverflow.com/a/6419695/2125114
हामिद परचमी

3
यह चुना हुआ उत्तर होना चाहिए, 100% सहमत हैं कि sysadmins को वास्तविक मुद्दे पर काम करने से बचने के लिए हर चीज तक पहुंच की अनुमति नहीं देनी चाहिए।
HyperionX

134

अपने लाइव सर्वर पर निर्देशिकाओं के लिए कभी भी 777 का उपयोग न करें, लेकिन अपनी मशीन पर, कभी-कभी हमें 775 से अधिक करने की आवश्यकता होती है, क्योंकि

chmod -R 775 storage

माध्यम

7 - Owner can write
7 - Group can write
5 - Others cannot write!

यदि आपका वेबसर्वर वैग्रंट के रूप में नहीं चल रहा है, तो वह इसे नहीं लिख पाएगा, इसलिए आपके पास 2 विकल्प हैं:

chmod -R 777 storage

या समूह को अपने वेबसर्वर उपयोगकर्ता में बदल दें, यह मानते हुए www-data:

chown -R vagrant:www-data storage

मेरे मामले में chmod की जरूरत नहीं थी क्योंकि यह पहले से ही ठीक था, हालांकि Fedora 20 पर इसकी आवश्यकता थी:chown -R apache:apache laravelproject
मिस्टरजायटी

सांबा / आवारा के माध्यम से बढ़ते फ़ोल्डर्स की समस्या chown -R vagrant:www-data storageथी - यह मेरे लिए था, धन्यवाद।
लुईस

1
chmod -R 777 स्टोरेज ने मेरे लिए काम किया। मैं समूह को बदलने की कोशिश की, लेकिन मैं हो रही हैwww-data: illegal group name
मैट डी

57

इस समस्या को ठीक करने के लिए, आपको निर्देशिका का स्वामित्व यूनिक्स उपयोगकर्ता को बदलने की आवश्यकता है जिसे वेबसर्वर उपयोग करता है।

  1. VM से बाहर निकलें
  2. कंसोल का उपयोग करके, अपने सिंक किए गए फ़ोल्डर (योनि) पर जाएं
  3. sudo chown -R $ USER: www-data storage
  4. chmod -R 775 स्टोरेज

भले ही मैंने वीएम उपयोगकर्ता का उपयोग करके वीएम के भीतर प्रोजेक्ट बनाया हो, लेकिन फ़ोल्डर वास्तविक कंप्यूटर में उपयोगकर्ता का था; इसलिए, जब करने की कोशिश कर रहा है

अब यह काम कर रहा है।

उन सभी को धन्यवाद जिन्होंने मुझे इस बात का पता लगाने में मदद की

संपादित करें:

वास्तव में, यह अभी भी काम नहीं कर रहा था, फिर भी इसने मुझे "अनुमति से वंचित" समस्या दी।

यहाँ मैंने क्या किया, मैंने अपनी वैग्रांटफाइल को इस तरह संशोधित किया:

config.vm.synced_folder "./app","/var/www/", create:true,
:owner => "vagrant",
:group => "www-data",
:mount_options => ["dmode=775","fmode=664"]

मैंने ऐसा किया है ... और मैं हूँ! अभी भी काम नहीं कर रहा ... लार्वा 5 ... लॉग फ़ाइल का नाम बदला, लार्वा ने नया बनाया ... वही त्रुटि
ied3vil

1
मेरे पास config.vm.synced_folder नहीं है क्योंकि मैं होमस्टेड का उपयोग कर रहा हूं, मैं इस समस्या को कैसे ठीक कर सकता हूं?
oleynikd

21
आपको 777 सभी विली नीली का उपयोग नहीं करना चाहिए।
IIllIIll

मुझे एक फ़ोल्डर पर 777 का उपयोग करने पर कोई समस्या नहीं दिखाई देती है, मुझे पता है कि वास्तव में अंदर क्या है (एक डमी नमूना परियोजना)
FR11

2
यह बिल्कुल स्वीकृत उत्तर नहीं होना चाहिए। यह भयंकर है। कभी 777 सेट करें।
CGriffin

39

यह SELinux भी हो सकता है। (सेंटोस, रेडहैट)

टर्मिनल पर सेलाइनक्स की स्थिति निर्धारित करें:

$ sestatus

यदि स्थिति सक्षम है, तो Selinux को अक्षम करने के लिए कमांड लिखें

$ setenforce Permissive

या आप इस कमांड को निष्पादित कर सकते हैं

$ sudo setenforce 0


6
यह एकमात्र ऐसी चीज है जो काम करती है, क्या आप यह समझा सकते हैं कि यह क्या करती है?
14

2
@ hack4mer आप seLinux के बारे में अधिक जानकारी पढ़ सकते हैं। en.wikipedia.org/wiki/Security-Enhanced_Linux
Turan Zamanlı

अजीब चीजें जो मैंने कभी देखी हैं, 6 घंटे से अधिक समय तक खोज करने के बाद भी यह नरक क्यों काम करता है
मुहम्मद यूलियांतो

1
एकमात्र समाधान जिसने मेरे लिए काम किया .. धन्यवाद। लेकिन सर्वर के पुनरारंभ होने पर समस्या हर बार वापस आती है, क्या आप जानते हैं कि सर्वर के पुनरारंभ होने पर भी इसे कैसे लागू किया जाए?
जुआन एंजेल

1
@JuanAngel आपको सेवा को स्थायी रूप से अक्षम करना होगा। संपादक vim / etc / sysconfig / selinux के साथ खोलें और फिर निर्देश SELinux को बदल दें = SELinux को अक्षम कर = अक्षम
Turan Zamanlı

32

आपको storageऔर की अनुमतियों को समायोजित करने की आवश्यकता है bootstrap/cache

  • cd अपने लारवेल प्रोजेक्ट में।
  • sudo chmod -R 755 storage
  • sudo chmod -R 755 bootstrap/cache

अगर 755 काम नहीं करता है तो आप 777 कोशिश कर सकते हैं। हालांकि 777 सुरक्षित नहीं है!

आपका वेब सर्वर कैसे सेटअप है, इसके आधार पर, आप अपनी अनुमतियों के साथ अधिक विशिष्ट हो सकते हैं, और केवल उन्हें अपने वेब सर्वर उपयोगकर्ता को दे सकते हैं। WEB SERVER NAME Laravel file permissionsअधिक जानकारी के लिए Google

लेखन के समय, यह लारवेल 5.4 के लिए है


14

में जोड़े composer.json

"scripts": {
    "post-install-cmd": [
          "chgrp -R www-data storage bootstrap/cache",
          "chmod -R ug+rwx storage bootstrap/cache"
     ]
}

उपरांत composer install


12

निम्नलिखित कमांड चलाएँ और आप sudoकमांड की शुरुआत में जोड़ सकते हैं आपके सिस्टम पर निर्भर करता है:

chmod -R 775 storage/framework
chmod -R 775 storage/logs
chmod -R 775 bootstrap/cache 

1
777 का उपयोग कभी न करें। 777 अनुमतियों के साथ, आप किसी को भी उन अनुमतियों के साथ फ़ाइलों या निर्देशिकाओं के पूर्ण कनेक्शन के साथ दे रहे हैं। वे उन्हें किसी भी तरीके से बदल सकते हैं, जिसमें वे दुर्भावनापूर्ण रूप से शामिल हैं। कई अकाउंट हैकिंग की घटनाएं 777 परमिशन से होती हैं।
ओडिसी

8

लारवेल संदर्भ पर सभी सेंटोस 7 उपयोगकर्ताओं के लिए, सेलिनक्स को अक्षम करने की आवश्यकता नहीं है, बस इन कमांडों को चलाएं:

yum install policycoreutils-python -y # might not be necessary, try the below first

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/storage(/.*)?" # add a new httpd read write content to sellinux for the specific folder, -m for modify
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/laravel/bootstrap/cache(/.*)?" # same as the above for b/cache

restorecon -Rv /var/www/html/ # this command is very important to, it's like a restart to apply the new rules

अंत में, सुनिश्चित करें कि आपके मेजबान, ips और वर्चुअल होस्ट दूरस्थ पहुँच के लिए सही ढंग से हैं।

सेलिनक्स का उद्देश्य रूट उपयोगकर्ताओं तक पहुंच को प्रतिबंधित करना है, इसलिए केवल आवश्यक सामान तक ही पहुंचा जा सकता है, कम से कम एक सामान्य अवलोकन पर, यह अतिरिक्त सुरक्षा है, यह अक्षम करना एक अच्छा अभ्यास नहीं है, सेलिनक्स को सीखने के लिए कई लिंक हैं, लेकिन इसके लिए मामला यह भी आवश्यक नहीं है।


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
पैट्रिक मेव्ज़ेक

लिंक सुपर स्पष्ट है, इस तरह के तंत्र की कोई आवश्यकता नहीं है, यहां तक ​​कि एक अनुभाग भी है जो कि लारवेल SELinux संदर्भ के लिए विशिष्ट रूप से है। मुझे लगता है कि आपकी राय को अंगूठे के एक साधारण नियम की तुलना में थोड़ा अधिक तर्क द्वारा समर्थित किया जाना चाहिए। इस बीच आपने एक उत्तर को अस्वीकार कर दिया, जो कि संभवतः 99% मुद्दों को ठीक करेगा, जिसमें सेलिनक्स को अक्षम करने जैसी बुरी प्रथाओं का पालन नहीं किया जाएगा।
डैनियल सांतोस

यह स्पष्ट होना या न होना कोई समस्या नहीं है। इस साइट का विचार यह है कि इसमें सभी प्रासंगिक जानकारी शामिल है, इसलिए एक उत्तर पढ़ने से हमें यह सब मिलता है। बाहरी लिंक सड़ सकते हैं और फिर उत्तर बेकार हो जाता है। इस सहायता केंद्र में समझाया गया है stackoverflow.com/help/how-to-answer : "बाहरी संसाधनों के लिंक को प्रोत्साहित किया जाता है, लेकिन कृपया लिंक के आसपास संदर्भ जोड़ें, ताकि आपके साथी उपयोगकर्ताओं को कुछ पता चले कि यह क्या है और क्यों है। । हमेशा एक महत्वपूर्ण कड़ी की सबसे अधिक प्रासंगिक हिस्सा है, बोली मामले में लक्ष्य साइट पहुंच योग्य नहीं है या स्थायी रूप से ऑफ़लाइन चला जाता है। "
पैट्रिक Mevzek

आपके प्रश्न को समीक्षा के लिए चिह्नित किया गया था, यह सब है। और यह विरोधाभासी है जो मैंने उद्धृत सहायता केंद्र में लिखा है। केवल लिंक और बिना किसी विवरण के सभी उत्तरों को हटा दिया जाता है और हटा भी दिया जाता है। स्पष्टीकरण के प्रासंगिक हिस्से को प्रदान करने के लिए अपने उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें। और आप अपने आप को उन सभी उत्तरों को समाप्त करने के लिए स्वतंत्र हैं जो आपको लगता है कि खराब हैं। आप समीक्षा लिंक से देख सकते हैं कि आपके उत्तर को बंद करने की सिफारिश करने में मैं अकेला नहीं था। तकनीकी गुणों पर नहीं, सिर्फ इसलिए कि एक लिंक पर्याप्त नहीं है।
पैट्रिक मेव्ज़ेक

स्पष्टीकरण के लिए धन्यवाद, मुझे नहीं पता था कि उन प्रकार के दिशानिर्देश मौजूद थे, या यदि पंजीकरण प्रक्रिया में भी आपको संसाधनों को पढ़ने के लिए एक टिप मिलती है, तो मुझे याद नहीं है। आपने जो कहा वह सच हो सकता है, लिंक सड़ सकता है, लेकिन एक प्रयास के बिना जवाब दिया जा सकता है, इसकी परवाह किए बिना, मैं इसे संपादित करूंगा।
डैनियल सैंटोस

6

यदि आप cmd का उपयोग करते हैं

sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

यदि आप GUI का उपयोग करते हैं

सबसे पहले प्रोजेक्ट पर जाएं और स्टोरेज पर राइट क्लिक करें और प्रॉपर्टीज को चेक करें और अनुमतियां टैब पर जाएं

यहां छवि विवरण दर्ज करें

नीचे दिए गए कोड का उपयोग करके अनुमतियाँ बदलें

sudo chmod -R 777 storage

तब आपकी फ़ाइल गुण हो सकते हैं

यहां छवि विवरण दर्ज करें

फिर अपनी सेटिंग्स की जाँच करें और यह काम करेगा लार्वा कमांड निष्पादित करें :)


Yoouuuuuu धन्यवाद
viniciussvl

5

लारवेल में, आपको एसीएल को storageऔर cacheनिर्देशिका पर सेट करना चाहिए ताकि वेब सर्वर उपयोगकर्ता निर्देशिका पर पढ़ / लिख सके। एक नया टर्मिनल खोलें और निम्नलिखित चलाएं:

HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)

sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/
sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX bootstrap/cache storage/

संदर्भ:

https://symfony.com/doc/3.4/setup/file_permissions.html#using-acl-on-a-system-that-supports-setfacl-linux-bsd

https://linux.die.net/man/1/setfacl


5

देर हो सकती है लेकिन किसी की मदद कर सकते हैं, निर्देशिका अनुमतियाँ बदलने से मेरे लिए काम किया।

यह मानते हुए कि आपकी लारवेल परियोजना /var/www/html/निर्देशिका में है।

cd /var/www/html/

फिर storage/और bootstrap/cache/निर्देशिकाओं की अनुमति बदलें ।

sudo chmod -R gu+w storage/
sudo chmod -R guo+w storage/
sudo chmod -R gu+w bootstrap/cache/
sudo chmod -R guo+w bootstrap/cache/

2

यह समाधान लार्वा 5.5 के लिए विशिष्ट है

आपको कुछ फ़ोल्डरों के लिए अनुमतियाँ बदलनी होंगी: chmod -R -777 स्टोरेज / लॉग्स chmod -R -777 स्टोरेज / फ्रेमवर्क उपरोक्त फ़ोल्डरों के लिए 775 या 765 ने मेरी परियोजना के लिए काम नहीं किया।

chmod -R 775 bootstrap/cache 

इसके अलावा परियोजना फ़ोल्डर का स्वामित्व निम्नानुसार होना चाहिए (वर्तमान उपयोगकर्ता) :( वेब सर्वर उपयोगकर्ता)



1

मैं अपने फ़ोल्डर अनुमतियों को 777 में बदलने के लिए उत्सुक नहीं था। यहां बताया गया है कि मैं इस मुद्दे को ठीक करने के बारे में कैसे गया।

सबसे पहले, मैंने उस उपयोगकर्ता को बदल दिया जो मेरे स्थानीय मशीन पर वेब सर्वर चला रहा है (मैं nginx चलाता हूं, लेकिन सिद्धांत हर जगह लागू होते हैं):

$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload

बाद में, मैंने यह पता लगाने index.phpके लिए public/फ़ोल्डर के नीचे एक और फ़ाइल बनाई कि मेरा php-fpm संस्करण कौन चला रहा है और मैं बदलने के बारे में कहाँ जाऊँगा:

<?php
phpinfo();
?>

पृष्ठ को पुनः लोड करने पर, मुझे पता चला कि www-dataवह उपयोगकर्ता था (पर्यावरण अनुभाग के तहत)। मुझे यह भी पता चला कि मैं php 7.1 चला रहा था। मैं उपयोगकर्ता को बदलने के लिए आगे बढ़ा:

$> sudo vim /etc/php/7.0/fpm/pool.d/www.conf 
#Look for www-data or the following variables: user, group, listen.user, listen.group.

अंत में, मैंने फ़ोल्डरों को निम्नलिखित अनुमति दी:

sudo chmod -R 775 ./storage/

अब, मैंने यह सुनिश्चित किया कि मैं एक साधारण का उपयोग करके फ़ोल्डर्स का मालिक था:

ls -al

यदि आप सर्वर और php-fpm उपयोगकर्ताओं को अपने आप को सेट करते हैं और फ़ोल्डर उदाहरण के लिए रूट के स्वामित्व में हैं, तो आप इस समस्या का सामना करते रहेंगे। यह हो सकता है यदि आपने एक sudo laravel new <project>रूट के रूप में किया । उस स्थिति में, सुनिश्चित करें कि आप सेटिंग्स chownबदलने के लिए अपने प्रोजेक्ट पर एक पुनरावर्ती आदेश का उपयोग करते user:groupहैं। अधिकांश डिफ़ॉल्ट मामलों में, www-dataसर्वर और php के लिए मुख्य सेटिंग है, उस स्थिति में यह सुनिश्चित करने की बात है कि फ़ोल्डर www-dataपहुंच से बाहर नहीं है ।

मेरा प्रोजेक्ट मेरे होम डायरेक्टरी में सेटअप है। उबंटू 16.04 और लारवेल 5.5 पर।


1

इसे इस्तेमाल करे

  1. cd / var / www / html
  2. सेटेनफोर्स 0
  3. सेवा httpd पुनः आरंभ

क्या आप बता सकते हैं कि यह क्या करता है?
बढ़ते हुए आइडियोटिक

1
उपयोग करने के लिए निर्देशिकाओं को बदलने की आवश्यकता नहीं है, setenforceलेकिन किसी भी मामले में केवल एक अनुमति समस्या को ठीक करने के लिए SELinux को पूरी तरह से अक्षम करना गलत है।
पैट्रिक मेव्ज़ेक

0

मेरे विशेष मामले में मेरे पास एक config फाइल उत्पन्न हुई और bootstrap/cache/निर्देशिका में कैश्ड हो गई ताकि मेरे चरण जहाँ:

  1. सभी उत्पन्न कैश्ड फ़ाइलें निकालें: rm bootstrap/cache/*.php
  2. एक नई laravel.logफ़ाइल बनाएँ और फ़ाइल का उपयोग करके अनुमतियों का अद्यतन लागू करें:

    • chmod -R 775 storage

0

( उबंटू पर ): 2 सरल चरणों में हल किया जा सकता है:

$ sudo chmod -R 777 storage 

तथा

$ sudo service apache2 restart

चरण 3: अपने सर्वर और / या अपने उपयोगकर्ताओं को हैक कर लें क्योंकि आपने अपनी फ़ाइलें दुनिया के लिए खोल दी हैं।
miken32

0

हटाएं "/var/www/laravel/app/storage/logs/laravel.log"और पुनः प्रयास करें:

rm storage/logs/laravel.log


-1

यह मुद्दा था और यह पाया और इस मुद्दे को हल किया।

यहां छवि विवरण दर्ज करें


-1

यह त्रुटि लिनक्स को अक्षम करके तय की जा सकती है।

जांचें कि क्या यह सक्षम है

sestatus

तुम कोशिश करो..

सेटेनफोर्स 0


5
" लिनक्स को अक्षम करके "? कि गंभीरता से बहुत दूर चला जाता है :-)!
पैट्रिक मेव्ज़ेक

-1

इस त्रुटि के लिए:

अपवाद हैंडलर में त्रुटि: धारा या फ़ाइल "/var/www/laravel/app/storage/logs/laravel.log" नहीं खोली जा सकी: धारा खोलने में विफल: अनुमति / var / www / laravel / बूटस्ट्रैप / संकलित में अस्वीकृत .php: 8423

टर्मिनल में इस कमांड का उपयोग करें:

sudo chmod -R 777 storage

2
उत्पादन के लिए बहुत बुरा है
अरविंद हक

-1

7.6 कमांड में इस कमांड के साथ मेरी समस्या को ठीक किया गया

chcon -R -t httpd_sys_content_t $SITE_PATH

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