Laravel 5.7 не может загрузить `storage / framework / cache / data` и записать в`. / Storage / logs / laravel-2019-06-11.log` - PullRequest
1 голос
/ 10 июня 2019

У меня есть проект под установку 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

Чтобы устранить ошибку, я попробовал следующее:

  • Количество попыток на основе разрешения:
 chmod 777 -R storage
 chmod 0777 -R storage
  • попытки на основе артистизма:
 php artisan cache:clear
 php artisan config:clear
 php artisan config:cache
 php artisan view:clear
  • php-fpm настройки пользователя по умолчанию:
sudo chown -R $USER:www-data storage
sudo chown -R $USER:www-data bootstrap/cache

Также для разработки я использую vagrant со следующим Vagrantfile, расположенным в корне моего проекта:

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

Возникла следующая NEW ошибка:

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

Это означает, что у него есть больше, чем просто разрешения для написания. Я также запускаю следующую команду:

$ ls -l /home/vagrant/code/storage/ | grep logs
drwxrw-rw- 1 vagrant vagrant 4096 Jun 10 17:31 logs

Это означает, что все еще есть хорошие разрешения enouch для записи в файл. Тем не менее ошибка показывает обратное.

Кроме того, я попробовал это:

mv bootstrap/cache/config.php ~/

Я также попробовал следующее:

rm -rf storage/logs/*
./artisan cache:clear

И проблема все еще остается.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Проблема в том, что код работает как www-data пользователь. Чтобы исправить tat, вы должны создать пользовательский ресурс php-fpm, используя пользователя и группу с именем vagrant.

0 голосов
/ 10 июня 2019

Убедитесь, что этот путь существует:

/home/vagrant/code/storage/framework/cache/data

На основании того, что вы показали /home/vagrant/code/storage/framework/cache/data имя проекта отсутствует, /home/vagrant/code/<name-of-your-project>/storage/framework/cache/data проверьте config/cache.php, соответствует ли оно:

'file' => [
    'driver' => 'file',
    'path' => storage_path('framework/cache/data'),
],

Вы можете попробовать сбросить storage_path(), чтобы посмотреть, как выглядит путь

...