Php Laravel 5.7无法加载`storage/framework/cache/data`并写入`./storage/logs/Laravel-2019-06-11.log`
我在laravel 5.7安装下有一个项目,出于某种原因,我得到以下错误:Php Laravel 5.7无法加载`storage/framework/cache/data`并写入`./storage/logs/Laravel-2019-06-11.log`,php,laravel,vagrant,laravel-5.7,user-permissions,Php,Laravel,Vagrant,Laravel 5.7,User Permissions,我在laravel 5.7安装下有一个项目,出于某种原因,我得到以下错误: file_put_contents(/home/vagrant/code/storage/framework/cache/data/1c/6e/1c6ea8378a1030f85a05f4cb2262de1e2164efa6): failed to open stream: No such file or directory 为了减轻错误,我尝试了以下方法: rm -rf storage/logs/* ./artisa
file_put_contents(/home/vagrant/code/storage/framework/cache/data/1c/6e/1c6ea8378a1030f85a05f4cb2262de1e2164efa6): failed to open stream: No such file or directory
为了减轻错误,我尝试了以下方法:
rm -rf storage/logs/*
./artisan cache:clear
- 基于权限的尝试:
- 基于artistan的尝试:
- php fpm默认用户设置:
vagrant文件
:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.box_version = "20180917.0.0"
config.vm.box_download_insecure = true
config.vm.provider "virtualbox" do |vb|
vb.name = "myapp-api"
vb.memory = 2024
vb.cpus = 1
vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end
config.vm.network "private_network", ip: "192.168.10.111"
config.vm.network "forwarded_port", guest: 80, host: 8888
config.vm.network "forwarded_port", guest: 22, host: 2223
config.vm.synced_folder "./.", "/home/vagrant/code"
# Provision Scripts
end
但所有这些都未能解决问题
编辑1
文件夹framework/cache/data
已经存在,如ls-l
所示:
$ ls -l /home/vagrant/code/storage/framework/cache/ | grep data
drwxrwxr-x 1 vagrant vagrant 4096 Jun 11 10:46 data
通过这样做:
rm -rf storage/framework/cache
mkdir -p storage/framework/cache
导致以下新错误:
The stream or file "/home/vagrant/code/storage/logs/laravel-2019-06-11.log" could not be opened: failed to open stream: Permission denied
因此,我的调查显示:
$ ls -l /home/vagrant/code/storage/logs
total 112
drwxrw-rw- 1 vagrant vagrant 4096 Jun 10 17:31 .
drwxr-xr-x 1 vagrant vagrant 4096 Jun 10 15:47 ..
-rwxrwxrwx 1 vagrant vagrant 14 Jun 10 15:47 .gitignore
-rwxrwxrwx 1 vagrant vagrant 96507 Jun 10 18:09 laravel-2019-06-10.log
这意味着它有超过enouch的写入权限。我还运行以下命令:
$ ls -l /home/vagrant/code/storage/ | grep logs
drwxrw-rw- 1 vagrant vagrant 4096 Jun 10 17:31 logs
这意味着仍然有很好的enouch权限,以便laravel写入文件。然而,错误显示了相反的情况
此外,我还试过这个:
mv bootstrap/cache/config.php ~/
我还尝试了以下方法:
rm -rf storage/logs/*
./artisan cache:clear
问题仍然存在。请确保此路径存在:
/home/vagrant/code/storage/framework/cache/data
根据您显示的内容,/home/vagrant/code/storage/framework/cache/data
没有项目名称,/home/vagrant/code//storage/framework/cache/data
检查您的配置/cache.php
是否对应于:
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache/data'),
],
您可以尝试转储
存储路径()
以查看路径是什么样子的问题是代码是以www data
用户身份运行的。要修复tat,您应该使用名为vagrant
的用户和组创建一个自定义php fpm
池
这是通过以下配置实现的php-fpm
配置:
[www-vagrant]
listen = 127.0.0.1:9001;
user=vagrant
group=vagrant
并使用tcp://127.0.0.1:9001
进入nginx配置。或者,如果使用单个用户执行所有php脚本,则可以使用默认(www
)池:
[www]
# Existing pieces of configuration
user=vagrant
group=vagrant
更多信息位于此处:(请记住,对于以后的php版本,将路径的
/etc/php5
部分替换为/etc/php^Version^
,其中^Version^
是所需的php版本。如果使用Docker,请首先在 ژهproject目录,然后运行以下命令
docker compose exec php/bin/sh
然后运行以下命令
chown-R www-data:www-data./
然后,如果没有结果,请从引导/缓存部分删除一次配置文件,然后运行以下命令:
php artisan配置:缓存
我希望问题得到解决。尝试删除bootstrap/cache/config.php文件。尝试删除
存储/framework/cache
目录中的所有文件/目录。我尝试了这一点,但导致了新的错误。运行whoami
查看您以谁的身份运行这些命令。您可能需要更改您所在的用户(例如,sudo-iu vagrant
成为vagrant用户)或将文件的所有者更改为应该拥有所有权的所有者(例如,chown:-R
该项目名为code
,它是在一个使用ubuntu 16.04LTS运行vm的自定义流浪汉身上命名的。如何在@Dimitrios一步一步地实现它?感谢我的错误是我在我的机器上执行了php artisan cache:clear,但我应该在我的vm(在我的情况下,Homestead)中执行它。)
[www-vagrant]
listen = 127.0.0.1:9001;
user=vagrant
group=vagrant
[www]
# Existing pieces of configuration
user=vagrant
group=vagrant