Laravel 5权限问题求助:树莓派部署后文件流打开失败
解决Laravel部署到树莓派的权限异常问题
嘿,这个权限坑我在部署Laravel到Linux设备(包括树莓派)时踩过好多次,给你一套安全又有效的解决方案:
核心思路:别用777!要让Web服务器用户拥有必要读写权限,同时保持文件安全
树莓派上的Web服务器(不管是Apache还是Nginx)默认运行用户是www-data,我们要确保项目文件的组权限对这个用户开放,同时让你自己的登录用户(比如默认的pi)能正常修改代码。
分步操作:
设置正确的文件所有者和组
把项目目录的所有者设为你的登录用户(比如pi),组设为www-data,这样你能本地修改代码,Web服务器也能访问必要文件:sudo chown -R pi:www-data /var/www/html/test如果你用的不是默认的
pi用户,替换成你自己的用户名就行。设置基础文件和目录权限
- 所有目录设为
755(所有者读写执行,组和其他用户读执行):sudo find /var/www/html/test -type d -exec chmod 755 {} \; - 所有文件设为
644(所有者读写,组和其他用户读):sudo find /var/www/html/test -type f -exec chmod 644 {} \;
- 所有目录设为
给需要写入的目录额外权限
Laravel的storage和bootstrap/cache目录需要Web服务器有写入权限,我们给它们设为775(组用户拥有读写执行权限):sudo chmod -R 775 /var/www/html/test/storage /var/www/html/test/bootstrap/cache
为什么之前的操作会报错?
- 用
775时报错:大概率是storage目录的组不是www-data,导致Web服务器用户(www-data)没有写入权限,所以第一步的所有者/组设置是关键。 - 用
777时还报错:777虽然开放了所有权限,但可能你的resources/views目录的所有者或权限设置有问题,而且777是非常不安全的做法,绝对不推荐在生产环境使用。
特殊情况:如果你的代码需要修改resources/views文件
正常情况下Laravel不会直接修改resources/views下的文件(它会编译视图到storage/framework/views),如果你的业务逻辑确实需要写入这个目录,那给它也加上组写入权限:
sudo chmod -R 775 /var/www/html/test/resources/views
内容的提问来源于stack exchange,提问作者Lluís Puig Ferrer
相关产品推荐
相关产品推荐

