Подтвердить что ты не робот

Укажите допустимый путь к кэшу

Я продублировал рабочее приложение laravel и переименовал его в другое приложение. Я удалил папку поставщика и снова запустил следующие команды:

composer self-update

composer-update

npm install

bower install

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

InvalidArgumentException в строке Compiler.php 36: Пожалуйста, предоставьте допустимый путь кэширования.

ОшибкаException в строке Fileystem.php 111: file_put_contents (F:\WWW\Пример\приложения\хранения\рамки/сессии/edf262ee7a2084a923bb967b938f54cb19f6b37d): не удалось открыть поток: нет такого файла или каталога

У меня никогда не было этой проблемы раньше, я не знаю, что вызывает ее, и я не знаю, как ее исправить, я искал онлайн для решения, но пока ничего не нашел.

4b9b3361

Ответ 1

Итак, очевидно, что произошло, когда я дублировал мой проект, папка фреймворка внутри моей папки хранилища не была скопирована в новый каталог, это вызывает мою ошибку.

Ответ 2

Попробуйте следующее:

создайте эти папки в хранилище/фреймворке:

  • sessions
  • views
  • cache

Теперь должно работать

Ответ 3

Попробуйте следующее:

  • php artisan cache:clear
  • php artisan config:clear
  • php artisan view:clear

Ответ 4

Вы можете отредактировать readme.md с инструкциями по установке вашего приложения laravel в другой среде, например:

## Create folders

```
#!terminal

cp .env.example .env && mkdir bootstrap/cache storage storage/framework && cd storage/framework && mkdir sessions views cache

```

## Folder permissions

```
#!terminal

sudo chown :www-data app storage bootstrap -R
sudo chmod 775 app storage bootstrap -R

```

## Install dependencies

```
#!terminal

composer install

```

Ответ 5

Причину этой ошибки можно найти по адресу Illuminate\View\Compilers\Compiler.php

public function __construct(Filesystem $files, $cachePath)
{
    if (! $cachePath) {
        throw new InvalidArgumentException('Please provide a valid cache path.');
    }

    $this->files = $files;
    $this->cachePath = $cachePath;
}

Конструктор вызывается BladeCompiler в Illuminate\View\ViewServiceProvider

/**
 * Register the Blade engine implementation.
 *
 * @param  \Illuminate\View\Engines\EngineResolver  $resolver
 * @return void
 */
public function registerBladeEngine($resolver)
{
    // The Compiler engine requires an instance of the CompilerInterface, which in
    // this case will be the Blade compiler, so we'll first create the compiler
    // instance to pass into the engine so it can compile the views properly.
    $this->app->singleton('blade.compiler', function () {
        return new BladeCompiler(
            $this->app['files'], $this->app['config']['view.compiled']
        );
    });

    $resolver->register('blade', function () {
        return new CompilerEngine($this->app['blade.compiler']);
    });
}

Итак, отслеживая далее, следующий код:

$this->app['config']['view.compiled']

обычно находится в вашем /config/view.php, если вы используете стандартную структуру laravel.

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | View Storage Paths
    |--------------------------------------------------------------------------
    |
    | Most templating systems load templates from disk. Here you may specify
    | an array of paths that should be checked for your views. Of course
    | the usual Laravel view path has already been registered for you.
    |
    */
    'paths' => [
        resource_path('views'),
    ],
    /*
    |--------------------------------------------------------------------------
    | Compiled View Path
    |--------------------------------------------------------------------------
    |
    | This option determines where all the compiled Blade templates will be
    | stored for your application. Typically, this is within the storage
    | directory. However, as usual, you are free to change this value.
    |
    */
    'compiled' => realpath(storage_path('framework/views')),
];

realpath (...) возвращает false, если путь не существует. Таким образом, ссылаясь

'Please provide a valid cache path.' error.

Поэтому, чтобы избавиться от этой ошибки, вы можете убедиться, что

storage_path('framework/views')

или же

/storage/framework/views

существует :)

Ответ 6

Попробуйте следующее:

создайте эти папки в хранилище /framework:

  • сеансы
  • просмотров
  • Кэш/

данныхесли все еще не работает, попробуйте

php artisan cache:clear

если произошла ошибка, не удалось очистить кеш. Обязательно создайте папку data в кеш /data

Ответ 7

Я решил эту проблему, добавив эту строку в мой index.php:

$app['config']['view.compiled'] = "storage/framework/cache";

Ответ 8

Проблема на моей стороне (при развертывании на локальном хосте): отсутствовала папка представлений.. поэтому, если у вас нет папки фреймворка, вам нужно будет добавить папки. но если папка фреймворка уже существует, убедитесь, что все вышеперечисленные папки, например: 1. кеш 2. сеанс 3. просмотры

существует в вашем фреймворковом каталоге.