file_put_contents (meta / services.json): ไม่สามารถเปิดสตรีม: ปฏิเสธการอนุญาต


169

ฉันใหม่สำหรับ Laravel ฉันพยายามที่จะเปิดhttp://localhost/test/public/และได้รับ

ข้อผิดพลาดในตัวจัดการข้อยกเว้น

ฉัน googled ไปรอบ ๆ และเปลี่ยนการอนุญาตของไดเรกทอรีจัดเก็บโดยใช้chmod -R 777 app/storageแต่ไม่มีประโยชน์

ผมเปลี่ยนdebug=>trueในapp.phpและเยี่ยมชมหน้าและมีข้อผิดพลาดในการจัดการข้อยกเว้น:

ไม่สามารถเปิดสตรีมหรือไฟล์ "/var/www/html/test/app/storage/logs/laravel.log": ไม่สามารถเปิดสตรีมได้: ไม่สามารถเปิดสตรีม: การอนุญาตถูกปฏิเสธใน / var / www / html / test / bootstrap / รวบรวม PHP: 8423

จากนั้นฉันเปลี่ยนสิทธิ์ของไดเรกทอรีที่เก็บข้อมูลโดยใช้คำสั่งchmod -R 644 app/storageและข้อผิดพลาด 'ข้อผิดพลาดในตัวจัดการข้อยกเว้น' หายไปและโหลดหน้า แต่ในที่นั่นฉันได้รับสิ่งนี้:

file_put_contents (/var/www/html/laravel/app/storage/meta/services.json): ไม่สามารถเปิดสตรีม: ปฏิเสธการอนุญาต


2
ดูเหมือนปัญหา permition อีกครั้ง chmod ซ้ำไดเรกทอรีแอพลิเคชันทั้งหมด
อาลู

@alou ฉันคิดว่าฉันได้ทำไปแล้วด้วย chmod -R 777 แอพ / ที่เก็บข้อมูล ไม่ใช่เหรอ และไดเรกทอรีทั้งหมดภายในแอปมีสิทธิ์ drwxrwxrwx
vishnub1626

33
ลอง: php artisan cache:clearแล้วchmod -R 777 app/storageในที่สุดphp artisan dump-autoload
vsmoraes

@vsmoraes มันใช้ได้ มันจะมีประโยชน์มากถ้าคุณสามารถอธิบายได้ว่าปัญหาคืออะไร
vishnub1626

7
ความคิดเห็นของ vsmoraes ถูกต้อง แต่แทนที่จะเป็น 'php artisan dump-autoload' ควรเป็น 'นักแต่งเพลง dump-autoload'
Elliot Robert

คำตอบ:


320

คำแนะนำจากvsmoraes ใช้ได้สำหรับฉัน:

Laravel> = 5.4

php artisan cache:clear 
chmod -R 777 storage/
composer dump-autoload

Laravel <5.4

php artisan cache:clear 
chmod -R 777 app/storage 
composer dump-autoload

หมายเหตุ: อย่าทำเช่นนี้กับเซิร์ฟเวอร์ระยะไกล (DEV หรือการผลิต)

เมื่อฉันถามคำถามนี้นี่เป็นปัญหาของ localhost ที่ทำงานในเครื่องเสมือน ดังนั้นฉันจึงคิดว่าการตั้งค่า 777 นั้นปลอดภัยพออย่างไรก็ตามผู้คนพูดถูกเมื่อคุณบอกว่าคุณควรมองหาวิธีแก้ปัญหาอื่น ลอง 775 ก่อน


8
นี่ควรเป็น sudo chmod -R 777 แอพ / ที่เก็บข้อมูล เพื่อหลีกเลี่ยงข้อผิดพลาดการอนุญาต
Olaitan Mayowa

5
สำหรับ # Laravel5 คำแนะนำเกือบเหมือนกัน: php artisan cache:clearจาก chmod -R 777 storageนั้นจึง composer dump-autoload
WNRosenberg

6
หากคุณกำลังใช้ Laravel 5.1+ คุณจะต้องทำchmod -R 777 storageแทน
James

10
php artisan cache:clearเป็นคำตอบที่ถูกต้อง จากนั้นsudo chmod -R ug+rw storageให้สิทธิ์ที่ถูกต้องสำหรับฉันโดยไม่ต้องให้others
Zack Morris

43
คำตอบนี้และด้ายคือสิ่งที่ไฮไลท์ว่าทำไมฉันไม่ชอบ Laravel มาก: มันสอนให้นักพัฒนาที่คุณสามารถทำอะไรที่คุณต้องการเมื่อใดก็ตามที่คุณต้องการเป็นอย่างที่คุณต้องการโดยไม่คิดผลที่ตามมา (ผมเข้าใจ777ไม่ Laravel เฉพาะ แต่ กระบวนการคิดสำหรับนักพัฒนา Laravel คือ: "ทำให้มันทำงานได้ในตอนนี้ฉันไม่สนเหมือนกัน" เหมือน777) ตามกฎทั่วไปไม่เคยตั้งค่าอะไร777เพื่อให้ได้งาน ทำความเข้าใจกับเซิร์ฟเวอร์และผู้ใช้ / บทบาทของคุณและตั้งค่าให้เหมาะสม อย่าแฮ็คมัน ลูกค้าของคุณเชื่อใจคุณให้ทำสิ่งนี้ถูกต้อง
dKen

70

สำหรับ googler ที่ประสบปัญหานี้กับ Laravel 5

นี่เป็นปัญหาสิทธิ์ที่เกิดจากผู้ใช้หลายคนพยายามเขียนที่ไฟล์บันทึกเดียวกันภายในstorage/logsโฟลเดอร์ที่มีสิทธิ์ต่างกัน

สิ่งที่เกิดขึ้นคือการกำหนดค่า laravel ของคุณอาจถูกตั้งค่าให้บันทึกข้อผิดพลาดทุกวันดังนั้นเว็บเซิร์ฟเวอร์ของคุณ (apache / nginx) อาจสร้างไฟล์นี้ภายใต้ผู้ใช้เริ่มต้นขึ้นอยู่กับสภาพแวดล้อมของคุณซึ่งอาจเป็นสิ่งที่ต้องการ_wwwบน OSX หรือwww-dataระบบ * NIX เกิดขึ้นเมื่อคุณอาจรันคำสั่ง artisan และมีข้อผิดพลาดบางอย่างดังนั้นช่างฝีมือจะเขียนไฟล์นี้ แต่มีผู้ใช้คนอื่นเนื่องจาก PHP บนเทอร์มินัลถูกดำเนินการโดยผู้ใช้คนอื่นจริง ๆ แล้วผู้ใช้เข้าสู่ระบบของคุณ :

php -i | grep USER

หากผู้ใช้ล็อกอินของคุณสร้างไฟล์บันทึกนั้นเว็บเซิร์ฟเวอร์ของคุณคุณจะไม่สามารถเขียนข้อผิดพลาดได้และในทางกลับกันเพราะ laravel เขียนไฟล์บันทึกด้วย 655สิทธิ์โดยค่าเริ่มต้นซึ่งอนุญาตให้เจ้าของเขียนได้เท่านั้น

ในการแก้ไขปัญหาชั่วคราวนี้คุณจะต้องให้สิทธิ์แก่กลุ่ม664ในไฟล์นี้ด้วยตนเอง เพื่อให้ทั้งผู้ใช้ที่ล็อกอินของคุณและผู้ใช้เว็บเซิร์ฟเวอร์สามารถเขียนไปยังไฟล์บันทึกนั้นได้

เพื่อหลีกเลี่ยงปัญหานี้อย่างถาวรคุณอาจต้องการตั้งค่าการอนุญาตที่เหมาะสมเมื่อไฟล์ใหม่ถูกสร้างขึ้นในstorage/logsdir โดยสืบทอดสิทธิ์จากไดเรกทอรีคำตอบนี้https://unix.stackexchange.com/a/115632สามารถช่วยคุณจัดการกับ ที่.


คำตอบจากแฟนคลับ - friggen-tastic ที่นี่! ฉันกำลังใช้งาน Elastic Beanstalk และผู้ใช้ PHP บรรทัดคำสั่งของฉันคือ "ผู้ใช้ ec2" แต่แอปพลิเคชันของฉันทำงานเป็น "webapp"
แรนดี้ L

1
คำตอบที่อธิบายถึงปัญหา เช่นคำตอบที่เหมาะสม
Craicerjack

สิ่งนี้ช่วยให้ฉันรู้ว่าทำไมฉันถึงได้รับข้อผิดพลาดแคชไฟล์ใน Laravel บน Cloudways ฉันต้องกดปุ่มในแผง Cloudways เพื่อรีเซ็ตสิทธิ์ของไฟล์ ขอบคุณ
Ryan

44

คุณไม่ควรให้สิทธิ์ 777 มันเสี่ยงต่อความปลอดภัย สำหรับผู้ใช้ Ubuntu ใน Laravel 5 ฉันมีความปรารถนาที่จะเปลี่ยนเจ้าของสำหรับการจัดเก็บไดเรกทอรีซ้ำ:

ลองทำตาม:

sudo chown -R www-data:www-data storage

ในระบบที่ใช้ Ubuntu นั้น www-data เป็นผู้ใช้ apache


2
การแก้ไขนี้สำหรับฉันและถูกต้องกว่า (ฉันคิดว่า) กว่าchmod 777คำตอบ ขอบคุณ ~
GavinR

ฉันคิดว่ามันเป็นคำตอบที่สะดวกที่สุดสำหรับผู้ใช้ Linux ขอบคุณ @GavinR chmod 777เป็นฝันร้ายที่สมบูรณ์
Abdalla Arbab

สิ่งนี้ใช้ได้สำหรับฉันและเป็นตัวเลือกที่ดีกว่า chmod -777
Egnaro

ขอบคุณสำหรับวิธีการใหม่ในการแก้ปัญหา! เราจำเป็นต้องทำอะไรบางอย่างก่อน / หลังคำสั่งของคุณเพื่อย้อนกลับchmod 777ผลที่ตามมา?
Aleksandar

41

สำหรับทุกคนที่ใช้ Laravel 5, Homestead และ Mac ลองทำสิ่งนี้:

mkdir storage/framework/views

นี้ยังทำงานร่วมกับการทำเซิร์ฟเวอร์ใหม่กับ Laravel Forge กับ Laravel 5.2.7
winkster

2
มันทำเพื่อฉัน ดูเหมือนว่าbootstrap/cache/compiled.phpกำลังพยายามเขียนไปยังไดเรกทอรีนี้ แต่มันไม่ได้มีอยู่และจบลงด้วยการโยนข้อผิดพลาดการอนุญาต ขอบคุณ.
Matt K

1
ยังไงก็เถอะมันก็ใช้ได้สำหรับฉัน ฉันใช้ laravel 5.1 btw
Yohanes Gultom

ขอบคุณสำหรับสิ่งนี้ ฉันลบไดเรกทอรีที่เก็บข้อมูลทั้งหมดของฉันโดยคิดว่าสิ่งนี้จะถูกสร้างขึ้นโดย laravel อีกครั้งอย่าเดาเลย
grimmdude

33

บางครั้ง SELINUX ทำให้เกิดปัญหานี้ คุณสามารถปิดใช้งาน selinux ด้วยคำสั่งนี้

sudo setenforce 0

ว้าวฉันทำกลอุบายและใช้งานได้จริงบางคนสามารถอธิบายให้ฉันฟังว่าทำไมมันถึงใช้ได้ selinux คืออะไร
undefinedman

ใช่มันใช้งานได้จริง! โปรดช่วยพวกเราในการทำความเข้าใจกับ SELINUX ด้วยกูรู? ฉันใช้ fedora 24 btw
loki9

1
ขอบคุณมาก ฉันค้นหาสุทธิและทุกคนพูดกับฉันตรวจสอบการอนุญาตตรวจสอบผู้ใช้และอื่น ๆ ...
Ali ZahediGol

3
นี่เป็นเหมือนการปิดไฟร์วอลล์ทั้งหมดเพราะมันปิดกั้นพอร์ตที่คุณต้องการเปิด
Teh JoE

ฉันไม่เคยได้ยินเรื่องนี้ "Security-Enhanced Linux (SELinux) เป็นโมดูลความปลอดภัยเคอร์เนลของ Linux ที่มีกลไกสำหรับสนับสนุนนโยบายความปลอดภัยการควบคุมการเข้าถึง" ฉันสงสัยว่ามันเป็นความคิดที่ดีที่จะปิด และฉันพนันได้เลยว่าผู้ upvoters ใช้คำสั่งนี้โดยไม่เข้าใจผลที่เกิดขึ้นอย่างสมบูรณ์
Ryan

18

แก้ไขปัญหา

php artisan cache:clear
sudo chmod -R 777 vendor storage

สิ่งนี้ทำให้การอนุญาตให้เขียนแอพ, กรอบงาน, บันทึกหวังว่าจะช่วยได้


12
ไม่เคย 777 ... ใน dev หรือกระทุ้งเพราะมันจะให้ภาพลวงตาของสิ่งที่ทำงานใน dev แต่พวกเขาจะบุกใน prod เว้นแต่ 777 เช่นกันซึ่งไม่เคยมีความคิดที่ดี
Kyle Burkett

wooha you rock ... ผู้ขายคือคนที่ฉันขาดไป
lu1s

ใช่การให้ทุกอย่างในที่สาธารณะทางเว็บ 777 เป็นความคิดที่ไม่ดี
imabug

17

อย่าให้สิทธิ์ 777!

ไปที่ไดเรกทอรีของโครงการ laravel บนเทอร์มินัลของคุณและเขียน:

sudo chown -R your-user:www-data /path/to/your/laravel/project/
sudo find /same/path/ -type f -exec chmod 664 {} \;
sudo find /same/path/ -type d -exec chmod 775 {} \;
sudo chgrp -R www-data storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

วิธีที่คุณทำให้ผู้ใช้ของคุณเป็นเจ้าของและมอบสิทธิพิเศษนี้:
1 ดำเนินการ, 2 เขียน, 4 อ่าน
1 + 2 + 4 = 7 หมายถึง (rwx)
2 +4 = 6 หมายถึง (rw)
ในที่สุดสำหรับการเข้าถึงที่เก็บ ug + rwx หมายความว่าคุณให้ผู้ใช้และกลุ่มเป็น 7


1
ฉันไม่รู้ว่าทำไมมาก dev ต้องการใช้ 777 ... อย่างใดพวกเขาไม่สนใจเกี่ยวกับระบบของพวกเขา ..
ZeroOne

15

สำหรับผู้ใช้ที่ใช้วิธีแก้ปัญหาคือ:

(ในคนจรจัด) แคชช่าง PHP: ชัดเจน

chmod -R 777 แอพ / ที่เก็บข้อมูล

(ในคนจรจัด) นักแต่งเพลง dump-autoload

ให้แน่ใจว่าคุณ chmod ในสภาพแวดล้อมท้องถิ่นของคุณและไม่ได้อยู่ในคนจรจัดเป็นสิ่งสำคัญที่นี่!


6
ไม่เปิด 777 ด้วยเหรอ?
simo

3
ฉันหมายถึงสำหรับการผลิตแน่นอน แต่นี่คือสภาพแวดล้อมท้องถิ่น 777 เป็นสิ่งที่ผู้ใช้ดั้งเดิมใช้โปสเตอร์และคำตอบอื่น ๆ 775 หรือ 755 อาจทำงานได้ขึ้นอยู่กับ
เบรนแดน

12

chmod -R 755 /var/www/html/test/app/storageลองอีกครั้งด้วย ใช้กับ sudo สำหรับOperation not permittedใน chmod ใช้ตรวจสอบสิทธิ์ของเจ้าของหากยังคงมีข้อผิดพลาด


ไม่ทำงาน. ไดเรกทอรีทั้งหมดภายในแอพมีสิทธิ์ drwxrwxrwx
vishnub1626

@tav คุณสามารถโปรดตรวจสอบการอนุญาตจากเจ้าของสำหรับโฟลเดอร์ทดสอบของคุณหรือไม่
Khay

drwxrwxrwx เดียวกัน แก้ไขปัญหาโดยใช้คำแนะนำของ @ vsmoraes (ดูความคิดเห็น)
vishnub1626

4
chmod 777 มีความเสี่ยงด้านความปลอดภัย
Yogesh Kamat

9

ตาม Laravel 5.4 ซึ่งเป็นเวอร์ชั่นล่าสุดที่ฉันเขียนนี้หากคุณมีปัญหาใด ๆ เช่นนี้คุณต้องเปลี่ยนการอนุญาต อย่าฟังใครก็ตามที่บอกให้คุณตั้งค่า 777 สำหรับไดเรกทอรีใด ๆ มันมีปัญหาด้านความปลอดภัย เปลี่ยนสิทธิ์ของโฟลเดอร์จัดเก็บข้อมูลเช่นนี้

sudo chmod -R 775 storage

เปลี่ยนสิทธิ์การบูตโฟลเดอร์เช่นนี้

sudo chmod -R 775 bootstrap/cache

ตอนนี้โปรดตรวจสอบให้แน่ใจว่าคุณกำลังรันทั้งสองคำสั่งจากไดเรกทอรีแอปพลิเคชันของคุณ คุณจะไม่ประสบปัญหาในอนาคตเกี่ยวกับการอนุญาต 775 ไม่ทำลายความปลอดภัยของเครื่องของคุณ


7

แนะนำการอนุญาตที่ถูกต้องหากสำหรับ Apache

sudo chown -R apache:apache apppath/app/storage

การใช้ Laravel Forge: sudo chown -R forge: forge ~ / project / storage / sudo chown -R forge: forge ~ / project / bootstrap / cache /
Flappy

6

หากคุณมีLaravel 5และกำลังมองหาโซลูชันถาวรสามารถphp artisanใช้งานได้ทั้งการใช้บรรทัดคำสั่งและเซิร์ฟเวอร์ Apache:

sudo chmod -R 777 vendor storage
echo "umask 000" | sudo tee -a /etc/resolv.conf
sudo service apache2 restart

ดูคำอธิบายรายละเอียดที่นี่


8
ดูเหมือนจะเป็นความคิดที่ดีที่จะใช้ 777
Randy L

ขอ 000 ค่าเป็น resolv.conf?! ผู้คนนี้รับข้อมูลนี้จากที่ไหน นั่นคือบรรทัดที่ไม่ถูกต้องใน resolv.conf โปรดเพิกเฉยต่อสิ่งนี้และ "วิธีแก้ปัญหา" ทั้งหมด 777 ข้อ
higuita

ตรวจสอบ URL และค้นหาตัวเลือก umask ใน resolv.conf linux.die.net/man/5/resolv.conf
higuita

6

สำหรับทุกคนที่ใช้ระบบปฏิบัติการด้วย SELINUX: วิธีที่ถูกต้องในการอนุญาตให้ httpd เขียนไปยังโฟลเดอร์หน่วยเก็บ laravel คือ:

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/path/to/www/storage(/.*)?'

จากนั้นให้ใช้การเปลี่ยนแปลงทันที:

sudo restorecon -F -r '/path/to/www/storage'

SELinux สามารถจัดการกับความเจ็บปวดได้ แต่ถ้ามันมีอยู่ฉันอยากจะแนะนำให้คุณเรียนรู้มันอย่างหนักหน่วงมากกว่าที่จะผ่านมันไป


ปัญหาที่แน่นอนของฉันใน centos สด 7 ก็คล้ายกัน มันบอกว่าไม่ได้รับอนุญาตให้เขียน แต่ทั้งหมดนั้นเป็น 777 สำหรับการทดสอบ ดังนั้นโพสต์นี้จะช่วยประหยัดเวลาของฉันหลังจากการตรวจสอบทั่วไปทั้งหมด
HumaN

1
นี่เป็นวิธีที่ถูกต้องแม้ว่าฉันคิดว่าประเภท SELinux ที่ถูกต้องควรเป็น httpd_sys_rw_content_t sudo semanage fcontext -a -t httpd_sys_rw_content_t '/path/to/www/storage(/.*)?'
imabug

4

ฉันมีปัญหาเดียวกันและขั้นตอนด้านล่างช่วยฉันแก้ไขปัญหา

  1. ค้นหาผู้ใช้ apache - สร้างไฟล์ test.php ในโฟลเดอร์สาธารณะด้วยรหัส

<?php echo exec('whoami'); ?>

และเรียกใช้ไฟล์จากเว็บเบราว์เซอร์ มันจะให้ผู้ใช้ apache ในกรณีของฉันมันเป็นผู้ใช้ ec2 เพราะฉันใช้ aws กับ cronjob ติดตั้งใน /etc/cron.d/ อาจเป็นผู้ใช้อื่นสำหรับผู้อื่น

  1. เรียกใช้คำสั่งด้านล่างในบรรทัดคำสั่ง

sudo chown -R ec2-user:<usergroup> /app-path/public

คุณต้องระบุและใช้ "ผู้ใช้" และ "กลุ่มผู้ใช้" ที่ถูกต้องที่นี่


4

หากคุณใช้ Linux หรือ Mac คุณก็สามารถใช้งานssh terminalได้ คุณสามารถใช้เทอร์มินัลสำหรับเรียกใช้คำสั่งนี้

 php artisan cache:clear 
 sudo chmod -R 777 storage
 composer dump-autoload

หากคุณใช้ windows คุณสามารถใช้งานgit bashได้

 php artisan cache:clear 
 chmod -R 777 storage
 composer dump-autoload

คุณสามารถดาวน์โหลดแบบฟอร์มการคอมไพล์https://git-scm.com/downloads


3

Xampp สำหรับการใช้งาน:

cd /Applications/XAMPP/htdocs  
chmod -R 775 test/app/storage

1
คุณช่วยเพิ่มอีกนิดได้ไหม?
Aaron Hall

ฉันใช้บทความนี้และฉันก็คือ: การตั้งค่า Laravel 4.x บน Mac OSX 10.8+ ด้วย XAMPP
cristianojeda

3
chmod 777 มีความเสี่ยงด้านความปลอดภัย
Yogesh Kamat

1
คุณสามารถใช้ chmod 775 นี้ได้
cristianojeda

2

เมื่อใดก็ตามที่ฉันเปลี่ยน app.php ฉันได้รับอนุญาตปฏิเสธการเขียน bootstrap / cache / services.json ดังนั้นฉันจึงทำสิ่งนี้เพื่อแก้ไข:

chmod -R 777 bootstrap/cache/

8
chmod 777 มีความเสี่ยงด้านความปลอดภัย
Yogesh Kamat


2

การตั้งค่าการอนุญาตเป็น 777 เป็นความคิดที่น่ากลัวอย่างแน่นอน!

... แต่

หากคุณได้รับข้อผิดพลาดเกี่ยวกับการอนุญาตเชื่อมต่อกับโฟลเดอร์ "ที่เก็บข้อมูล" นั่นเป็นสิ่งที่ฉันต้องทำ:

1) ตั้งค่า "พื้นที่เก็บข้อมูล" และสิทธิ์ของโฟลเดอร์ย่อยเป็น 777 ด้วย

sudo chmod -R 777 storage/

2) ในเบราว์เซอร์ไปที่หน้าหลัก laravel laravel / public / (laravel จะสร้างไฟล์หน่วยเก็บข้อมูลเริ่มต้นที่จำเป็น)

3) ส่งคืนการอนุญาต 775 อย่างปลอดภัยในการจัดเก็บและโฟลเดอร์ย่อย

sudo chmod -R 775 storage/

2

หากใช้ laradock ให้ลองใช้chown -R laradock:www-data ./storageคอนเทนเนอร์ของพื้นที่ทำงาน



0

หากคนอื่นพบปัญหาที่คล้ายกันกับข้อผิดพลาดสิทธิ์ fopen ไฟล์ แต่ก็ฉลาดพอที่จะไม่ chmod 777 สุ่มสี่สุ่มห้านี่คือคำแนะนำของฉัน

ตรวจสอบคำสั่งที่คุณใช้สำหรับสิทธิ์ที่ apache ต้องการ:

fopen('filepath/filename.pdf', 'r');

'r' หมายถึงเปิดให้อ่านอย่างเดียวและหากคุณไม่ได้แก้ไขไฟล์นี่คือสิ่งที่คุณควรตั้งไว้ นี่หมายความว่า apache / www-data ต้องการสิทธิ์ในการอ่านอย่างน้อยในไฟล์นั้นซึ่งหากไฟล์ถูกสร้างผ่าน laravel มันจะได้รับอนุญาตให้อ่านได้แล้ว

ถ้าด้วยเหตุผลใดก็ตามคุณต้องเขียนไฟล์:

fopen('filepath/filename.pdf', 'r+');

จากนั้นตรวจสอบให้แน่ใจว่า Apache มีสิทธิ์ในการเขียนไฟล์

http://php.net/manual/en/function.fopen.php


0

เพียงแค่เริ่มต้นเซิร์ฟเวอร์ของคุณโดยใช้ artisian

php artisian serve

จากนั้นเข้าถึงโครงการของคุณจาก URL ที่ระบุ:

ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันมีปัญหาเดียวกันเมื่อใช้งานคนจรจัดใน Mac แก้ไขปัญหาโดยการเปลี่ยนผู้ใช้เซิร์ฟเวอร์ Apache ในไฟล์ https.conf:

# check user for php
[vagrant] ubuntu ~ $ php -i | grep USER
USER => ubuntu
$_SERVER['USER'] => ubuntu
[vagrant] ubuntu ~ $ 

เรียกใช้ apache ภายใต้ผู้ใช้ php แทน user daemon เพื่อแก้ไขปัญหาการเข้าถึงไฟล์ด้วย php

# change default apache user from daemon to php user
sudo sed -i 's/User daemon/User ubuntu/g' /opt/lampp/etc/httpd.conf
sudo sed -i 's/Group daemon/Group ubuntu/g' /opt/lampp/etc/httpd.conf

ตอนนี้ไฟล์แคช php ที่สร้างขึ้นสามารถอ่านและแก้ไขโดย apache โดยไม่แสดงข้อผิดพลาดสิทธิ์การเข้าถึง


0

หลังจากการทดลองใช้งานและข้อผิดพลาดมากมายกับการอนุญาตของไดเรกทอรีฉันลงเอยด้วย Epiphany ... ไม่มีพื้นที่เหลือบนพาร์ติชั่นของดิสก์ แค่อยากแบ่งปันเพื่อให้แน่ใจว่าไม่มีใครโง่พอที่จะมองหาทางออกในทิศทางที่ผิด

ใน Linux คุณสามารถใช้df -hเพื่อตรวจสอบขนาดดิสก์และพื้นที่ว่าง


0

ปัญหานี้เกิดขึ้นจริงจากผู้ใช้ที่ต้องการ write/readยื่นเอกสาร แต่ถูกปฏิเสธทำให้เกิดความเป็นเจ้าของที่แตกต่างกัน บางทีคุณอาจเป็น 'รูท' ที่ติดตั้ง laravel ไว้ก่อนหน้านั้นคุณลงชื่อเข้าใช้เว็บไซต์ของคุณในฐานะผู้ใช้ 'laravel' โดยที่ 'laravel' เป็นเจ้าของเริ่มต้นดังนั้นนี่เป็นปัญหาจริงที่นี่ ดังนั้นเมื่อผู้ใช้ 'laravel' ต้องการอ่าน / เขียนไฟล์ทั้งหมดในดิสก์เป็นค่าเริ่มต้นถูกปฏิเสธทำให้ไฟล์นั้นเป็นเจ้าของโดย 'root'

ในการแก้ปัญหานี้คุณสามารถปฏิบัติตามดังนี้:

sudo chown -hR your-user-name /root /nameforlder

หรือในกรณีของฉัน

sudo chown -hR igmcoid /root /sublaravel

เชิงอรรถ:

  1. root เป็นชื่อแรกที่ติดตั้งมาก่อน
  2. your-user-name เป็นเจ้าของเริ่มต้นที่จริง ๆ แล้วเขียน / อ่านในไซต์
  3. namefolder เป็นโฟลเดอร์ชื่อที่ต้องการให้คุณเปลี่ยนความเป็นเจ้าของ

0

ฉันพบข้อผิดพลาดเดียวกันในโครงการของฉัน ...
แต่พบว่าฉันลืมใส่enctypeในแบบฟอร์มของฉัน

<form method="#" action="#" enctype="multipart/form-data">

หวังว่าจะช่วยให้ที่ไหนสักแห่ง ...


0

ในขณะที่ทำงานกับ Windows 10 ด้วย Laragon และ Laravel 4 ดูเหมือนว่าฉันไม่มีทางที่จะเปลี่ยนการอนุญาตด้วยตนเองได้เนื่องจากการรันchmodคำสั่ง - คำสั่งใน Laragon-in-built-terminal นั้นไม่มีผลใด ๆ

อย่างไรก็ตามเป็นไปได้ที่เทอร์มินัลนี้จะไปที่โฟลเดอร์จัดเก็บข้อมูลและเพิ่มโฟลเดอร์ที่ต้องการเช่นนี้:

cd app/storage
mkdir cache
mkdir meta
mkdir views
mkdir sessions

cdคำสั่งใน terminal จะนำคุณไปยังโฟลเดอร์ (คุณอาจจำเป็นต้องปรับเปลี่ยนเส้นทางนี้เพื่อให้เหมาะกับโครงสร้างของไฟล์ของคุณ) mkdirคำสั่งจะสร้างไดเรกทอรีที่มีชื่อที่กำหนด

ฉันไม่ได้มีโอกาสทดสอบวิธีนี้ใน Laravel 5 แต่ฉันคาดหวังว่าวิธีการที่คล้ายกันควรใช้งานได้

แน่นอนอาจจะมีวิธีที่ดีกว่า แต่อย่างน้อยนี่เป็นวิธีแก้ปัญหาที่เหมาะสมกับสถานการณ์ของฉัน (การแก้ไขข้อผิดพลาด: file_put_contents(/var/www/html/laravel/app/storage/meta/services.json): failed to open stream)


-1
  1. ขั้นแรกให้ลบโฟลเดอร์หน่วยเก็บข้อมูลจากนั้นสร้างโฟลเดอร์หน่วยเก็บข้อมูลอีกครั้ง
  2. ภายในโฟลเดอร์หน่วยเก็บข้อมูลสร้างชื่อโฟลเดอร์ใหม่เป็นเฟรมเวิร์ก
  3. ภายในโฟลเดอร์เฟรมเวิร์กสร้างชื่อโฟลเดอร์สามโฟลเดอร์เป็นแคชเซสชันและมุมมอง

ฉันแก้ไขปัญหาด้วยการทำเช่นนี้แล้ว


-4

ฉันพยายามให้777สิทธิ์การเข้าถึงโฟลเดอร์จัดเก็บข้อมูลและมันก็ใช้ได้สำหรับฉัน

1) ไปที่ไดเรกทอรีราก laravel ของคุณ ( /var/www/htmlสำหรับฉัน) และเรียกใช้คำสั่งต่อไปนี้

chmod 777 -R storage

2
อย่าตั้งค่าการอนุญาตเป็น 777 เนื่องจากจะทำให้ dir มองเห็นและแก้ไขได้สำหรับทุกคนที่สามารถดู dir ไม่แนะนำ!
CodeNinja
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.