Tôi không thích thay đổi quyền truy cập thư mục của mình thành 777. Đây là cách tôi khắc phục sự cố này.
Đầu tiên, tôi đã thay đổi người dùng đang chạy máy chủ web trên máy cục bộ của mình (tôi chạy nginx, nhưng các nguyên tắc áp dụng ở mọi nơi):
$> sudo vim /etc/nginx/nginx.conf
user <my_user> #inside nginx.conf
service nginx reload
Sau đó, tôi đã tạo một index.php
tệp khác trong public/
thư mục để tìm ra ai đang chạy phiên bản php-fpm của tôi và nơi tôi sẽ thay đổi điều đó:
<?php
phpinfo();
?>
Đang tải lại trang, tôi phát hiện ra đó www-data
là người dùng (trong phần môi trường). Tôi cũng phát hiện ra mình đang chạy php 7.1. Tôi đã tiến hành thay đổi người dùng:
$> 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.
Cuối cùng, tôi đã cấp các quyền sau cho các thư mục:
sudo chmod -R 775 ./storage/
Bây giờ, tôi đã chắc chắn rằng mình là chủ sở hữu của các thư mục bằng cách sử dụng đơn giản:
ls -al
Nếu bạn đặt máy chủ và người dùng php-fpm cho chính mình và các thư mục được sở hữu bởi root chẳng hạn, thì bạn sẽ tiếp tục gặp phải vấn đề này. Điều này có thể xảy ra nếu bạn đã sudo laravel new <project>
làm root. Trong trường hợp đó, đảm bảo bạn sử dụng chown
lệnh đệ quy cho dự án của mình để thay đổi user:group
cài đặt. Trong hầu hết các trường hợp mặc định, www-data
là cài đặt chính cho máy chủ và php, trong trường hợp đó, vấn đề là đảm bảo thư mục không nằm ngoàiwww-data
tầm với.
Dự án của tôi được thiết lập trong thư mục nhà của tôi. Trên Ubuntu 16.04 và Laravel 5.5.