Php Laravel 5.7无法加载`storage/framework/cache/data`并写入`./storage/logs/Laravel-2019-06-11.log`

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

我在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/*
./artisan cache:clear
  • 基于权限的尝试:
  • 基于artistan的尝试:
  • php fpm默认用户设置:
同样对于开发,我使用vagrant,并在我的项目根目录下使用以下
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