Saya cukup baru di laravel, sebenarnya dan saya sedang mencoba untuk membuat proyek pertama saya. untuk beberapa alasan saya terus mendapatkan kesalahan ini (saya bahkan belum memulai pengkodean)
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
Saya sudah membaca ini ada hubungannya dengan izin tetapi chmod -R 775 storage
tidak membantu sama sekali.
Jawaban:
Jangan pernah mengatur direktori ke 777 . Anda harus mengubah kepemilikan direktori. jadi atur pengguna saat ini yang Anda gunakan sebagai pemilik dan pengguna server web (www-data, apache, ...) sebagai grup. Anda dapat mencoba ini:
lalu untuk mengatur izin direktori coba ini:
Memperbarui:
Pengguna dan grup server Web bergantung pada server web Anda dan OS Anda. untuk mengetahui apa yang pengguna dan grup server web Anda menggunakan perintah berikut. untuk penggunaan nginx:
ps aux|grep nginx|grep -v grep
untuk penggunaan apache:
ps aux | egrep '(apache|httpd)'
sumber
sudo chown -R {your current user}:www-data storage bootstrap/cache
chown: www-data: illegal group name
. Mengatur direktori ke 777 adalah satu-satunya hal yang berfungsi_www
coba inisudo chgrp -R _www bootstrap/cache
. akan sangat membantu untuk melihat posting ini: stackoverflow.com/a/6419695/2125114Jangan pernah menggunakan 777 untuk direktori di server langsung Anda, tetapi di komputer Anda sendiri, terkadang kami perlu melakukan lebih dari 775, karena
Cara
Jika server web Anda tidak berjalan sebagai Vagrant, itu tidak akan bisa menulis ke sana, jadi Anda memiliki 2 opsi:
atau ubah grup menjadi pengguna server web Anda, seandainya itu
www-data
:sumber
chown -R apache:apache laravelproject
chown -R vagrant:www-data storage
melakukannya untuk saya, terima kasih.www-data: illegal group name
Untuk memperbaiki masalah ini, Anda perlu mengubah kepemilikan direktori ke pengguna unix yang digunakan server web.
Meskipun saya membuat proyek dalam VM menggunakan pengguna VM, folder tersebut milik pengguna di komputer nyata; jadi, ketika mencoba
Sekarang berhasil.
Terima kasih untuk semua yang membantu saya memecahkan masalah ini
EDIT:
Sebenarnya, itu masih tidak berfungsi, itu masih memberi saya masalah "izin ditolak".
Inilah yang saya lakukan, saya memodifikasi Vagrantfile saya seperti ini:
sumber
Mungkin juga SELinux. (Centos, RedHat)
Tentukan status SElinux pada terminal:
Jika status diaktifkan, tulis perintah untuk menonaktifkan SElinux
Atau Anda dapat menjalankan perintah ini
$ sudo setenforce 0
sumber
Anda harus menyesuaikan izin
storage
danbootstrap/cache
.cd
ke dalam proyek Laravel Anda.sudo chmod -R 755 storage
sudo chmod -R 755 bootstrap/cache
Anda dapat mencoba 777 jika 755 tidak berhasil. 777 tidak aman!
Bergantung pada bagaimana pengaturan server web Anda, Anda mungkin bisa lebih spesifik dengan izin Anda, dan hanya memberikannya kepada pengguna server web Anda. Google
WEB SERVER NAME Laravel file permissions
untuk informasi lebih lanjut.Pada saat penulisan, ini untuk Laravel 5.4
sumber
Tambahkan
composer.json
Setelah
composer install
sumber
Jalankan perintah berikut dan Anda dapat menambahkan
sudo
pada awal perintah tergantung pada sistem Anda:sumber
Untuk semua pengguna Centos 7 pada konteks Laravel, tidak perlu menonaktifkan Selinux, cukup jalankan perintah ini:
Terakhir, pastikan host, ips, dan host virtual Anda semuanya benar untuk mengakses jarak jauh.
Selinux dimaksudkan untuk membatasi akses bahkan untuk pengguna root, jadi hanya hal-hal yang diperlukan yang dapat diakses, setidaknya pada tinjauan umum, itu keamanan ekstra, menonaktifkan itu bukan praktik yang baik, ada banyak tautan untuk mempelajari Selinux, tetapi untuk ini hal itu bahkan tidak diperlukan.
sumber
Jika Anda menggunakan cmd
Jika Anda menggunakan GUI
Pertama pergi ke proyek dan klik kanan pada penyimpanan dan periksa properti dan pergi ke tab Izin
Ubah izin menggunakan kode di bawah ini
Maka properti file Anda mungkin
Kemudian periksa pengaturan Anda dan jalankan perintah laravel itu akan berhasil :)
sumber
Di Laravel, Anda harus mengatur ACL
storage
dancache
direktori sehingga pengguna server web dapat membaca / menulis di direktori. Buka terminal baru dan jalankan berikut ini:Referensi:
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
sumber
Mungkin terlambat tetapi dapat membantu seseorang, mengubah izin direktori berfungsi untuk saya.
Dengan asumsi bahwa proyek Laravel Anda ada di
/var/www/html/
direktori.Kemudian ubah izin
storage/
danbootstrap/cache/
direktori.sumber
Solusi ini khusus untuk laravel 5.5
Anda harus mengubah izin untuk beberapa folder: chmod -R -777 penyimpanan / log chmod -R -777 penyimpanan / kerangka kerja untuk folder di atas 775 atau 765 tidak berfungsi untuk proyek saya
Juga kepemilikan folder proyek harus sebagai berikut (pengguna saat ini) :( pengguna server web)
sumber
Anda bisa melakukannya:
sumber
Saya tidak terlalu tertarik untuk mengubah izin folder saya ke 777. Begini cara saya memperbaiki masalah ini.
Pertama, saya mengubah pengguna yang menjalankan server web pada mesin lokal saya (saya menjalankan nginx, tetapi prinsipnya berlaku di mana-mana):
Setelah itu, saya membuat
index.php
file lain di bawahpublic/
folder untuk mencari tahu siapa yang menjalankan versi php-fpm saya dan ke mana saya akan mengubah itu:Reload halaman, saya menemukan itu
www-data
adalah pengguna (di bawah bagian lingkungan). Saya juga tahu saya menjalankan php 7.1. Saya melanjutkan untuk mengubah pengguna:Akhirnya, saya memberikan izin berikut ke folder:
Sekarang, saya memastikan bahwa saya adalah pemilik folder dengan menggunakan yang sederhana:
Jika Anda mengatur pengguna server dan php-fpm untuk diri sendiri dan folder dimiliki oleh root misalnya, maka Anda akan terus menghadapi masalah ini. Ini bisa terjadi jika Anda melakukan
sudo laravel new <project>
root. Dalam hal ini, pastikan Anda menggunakanchown
perintah rekursif pada proyek Anda untuk mengubahuser:group
pengaturan. Dalam kebanyakan kasus standar,www-data
adalah pengaturan utama untuk server dan php, dalam hal ini adalah masalah memastikan folder tidak di luarwww-data
jangkauan.Proyek saya diatur dalam direktori rumah saya. Di Ubuntu 16.04 dan Laravel 5.5.
sumber
coba ini
sumber
setenforce
tetapi dalam hal apa pun salah untuk sepenuhnya menonaktifkan SELinux hanya untuk memperbaiki satu masalah izin.Dalam kasus khusus saya, saya memiliki file konfigurasi yang dihasilkan dan di-cache ke
bootstrap/cache/
direktori sehingga langkah saya di mana:rm bootstrap/cache/*.php
Buat
laravel.log
file baru dan terapkan pembaruan izin pada file menggunakan:chmod -R 775 storage
sumber
(di Ubuntu ): Dapat dipecahkan dalam 2 langkah sederhana:
Dan
sumber
Hapus
"/var/www/laravel/app/storage/logs/laravel.log"
dan coba lagi:rm storage/logs/laravel.log
sumber
Punya masalah ini dan menemukan ini dan itu memecahkan masalah.
sumber
Kesalahan ini dapat diperbaiki dengan menonaktifkan Linux.
Periksa apakah sudah diaktifkan
sestatus
Kamu mencoba ..
setenforce 0
sumber
Untuk kesalahan ini:
Kesalahan dalam handler pengecualian: Aliran atau file "/var/www/laravel/app/storage/logs/laravel.log" tidak dapat dibuka: gagal membuka streaming: Izin ditolak di / var / www / laravel / bootstrap / dikompilasi .php: 8423
gunakan perintah ini di terminal:
sumber
Memperbaiki masalah saya dengan perintah ini di centos 7.6 Server
sumber