我复制了一个工作的 laravel 应用程序并将其重命名为用于另一个应用程序。我删除了供应商文件夹并再次运行以下命令:
composer self-update
composer-update
npm install
bower install
我正确配置了路线和所有内容,但是现在当我尝试在浏览器中运行我的应用程序时,出现以下错误:
Compiler.php 第 36 行中的 InvalidArgumentException:请提供有效的缓存路径。 Filesystem.php 第 111 行中的 ErrorException:file_put_contents(F:\www\example\app\storage\framework/sessions/edf262ee7a2084a923bb967b938f54cb19f6b37d):无法打开流:没有这样的文件或目录
我以前从来没有遇到过这个问题,我不知道是什么原因造成的,我也不知道如何解决它,我在网上搜索了一个解决方案,但到目前为止还没有找到。
尝试以下操作:
在 storage/framework 下创建这些文件夹:
会话
意见
缓存
现在它应该可以工作了
尝试这个:
php artisan 缓存:清除 php artisan 配置:清除 php artisan 视图:清除
[InvalidArgumentException] Please provide a valid cache path
。再次
php artisan cache:clear
,就会做噩梦!
可以从 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']
如果您使用标准的 laravel 结构,通常位于您的 /config/view.php 中。
<?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
存在:)
确保存储目录中的以下文件夹:
日志
框架
框架/缓存
框架/缓存/数据
框架/会话
框架/测试
框架/视图
下面是一个为你做的命令行片段
cd storage
mkdir logs
mkdir framework
mkdir framework/cache && framework/cache/data
mkdir framework/sessions
mkdir framework/testing
mkdir framework/views
chgrp -R www-data ../storage
chown -R www-data ../storage
运行这些命令来创建所需的目录:
cd storage/
mkdir -p framework/{sessions,views,cache}
chmod -R 775 framework
而已!
755
可能会更好。
您可以编辑您的 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
```
您需要在“框架”内创建文件夹。请按照以下步骤操作:
cd storage/
mkdir -p framework/{sessions,views,cache}
您还需要设置权限以允许 Laravel 在此目录中写入数据。
chmod -R 775 framework
chown -R www-data:www-data framework
尝试以下操作:
在 storage/framework 下创建这些文件夹:
会话
意见
缓存/数据
如果仍然不起作用,请尝试
php artisan cache:clear
php artisan config:clear
php artisan view:clear
如果出现无法清除缓存的错误。确保在缓存/数据中创建文件夹数据
检查以下文件夹是否存在,如果不存在则创建这些文件夹。
存储/框架/缓存
存储/框架/会话
存储/框架/测试
存储/框架/视图
从清除缓存开始
php artisan cache:clear
php artisan config:clear
php artisan view:clear
如果它不起作用,请确保以下所有文件夹都可用
logs
framework
framework/cache
framework/sessions
framework/views
如果所有建议都不起作用,请验证配置文件 config/view.php 是否存在。如果没有,您可以为您正在使用的 Laravel 获取此文件的副本,并将其复制到项目配置文件夹中。
当我在存储文件夹及其子文件夹会话、视图和缓存中创建框架文件夹时,我解决了这个问题。
转到您的 cmd 或终端,然后键入您的项目根路径,然后键入以下内容:
cd storage
mkdir framework
cd framework
mkdir sessions
mkdir views
mkdir cache
再次返回您的项目根路径并运行 composer update
之后,工匠完美地工作。
步骤 1、创建这些文件夹
mkdir -p 存储/{应用程序、框架、日志}
mkdir -p 存储/框架/{会话、视图、缓存}
chmod -R 777 存储
第二步、清除缓存/config/view
php工匠缓存:清除
php工匠配置:清除
php工匠视图:清除
chmod -R 777
所做的事情。这是一个被黑客攻击的邀请,因为您的 Web 服务器进程用户现在也可以在那里写信。
第 1 步:php artisan storage:link
第 2 步:在 storage 文件夹中创建这些文件夹
确保存储目录中的以下文件夹:
logs
framework
framework/cache
framework/sessions
framework/views
它对我有用
请在终端运行,
sudo mkdir storage/framework
sudo mkdir storage/framework/sessions
sudo mkdir storage/framework/views
sudo mkdir storage/framework/cache
sudo mkdir storage/framework/cache/data
现在您必须更改权限,
sudo chmod -R 777 storage
$paths = ["storage","storage/framework", "storage/framework/sessions", "storage/framework/views", "storage/framework/cache", "storage/framework/cache/data", "storage/logs", "storage/fonts"];
` foreach( $paths as $path){` ` if (!File::isDirectory($path)) { ` File::makeDirectory($path, 0777, true, true);
}
}
chmod -R 777
所做的事情。这是一个被黑客攻击的邀请,因为您的 Web 服务器进程用户现在也可以在那里写信。
我的 2 美分
删除存储中的所有内容,然后执行以下操作:
> cd storage/
> mkdir -p framework/{sessions,views,cache}
> chmod -R 755 framework
// This last line depends on your user group settings so
// it may not be applicable to you.
> chown -R www-data:www-data framework
为我工作=)
我这边的问题(在本地主机上部署时):缺少视图文件夹..因此,如果您没有框架文件夹,则需要添加文件夹。但如果已经存在框架文件夹,请确保所有上述文件夹,即 1. 缓存 2. 会话 3. 视图
存在于您的框架目录中。
如果这发生在服务器上:
sudo mkdir logs framework framework/cache framework/sessions framework/views
sudo chgrp -R www-data storage
sudo chmod -R ug+rwx storage
我通过在 index.php
中添加这一行解决了这个问题:
$app['config']['view.compiled'] = "storage/framework/cache";
您的存储目录或其子目录之一可能丢失。存储目录必须包含 Laravel 安装附带的所有子目录。
可能是存储文件夹没有应用程序和框架文件夹和必要的权限。在框架文件夹内,它包含缓存、会话、测试和视图。使用以下命令这将起作用。
Use command line to go to your project root:
cd {your_project_root_directory}
Now copy past this command as it is:
cd storage && mkdir app && cd app && mkdir public && cd ../ && mkdir framework && cd framework && mkdir cache && mkdir sessions && mkdir testing && mkdir views && cd ../../ && sudo chmod -R 777 storage/
我希望这能解决您的使用问题。
chmod -R 777
所做的事情。这是一个被黑客攻击的邀请,因为您的 Web 服务器进程用户现在也可以在那里写信。
在生产服务器上复制项目后,我也遇到了类似的情况。 Apache 通过符号链接访问了公共文件夹。
对于 Apache 或 PHP 服务,项目的路径没有改变,因此他们使用了指向旧项目存储库的缓存文件路径。
重新启动 Apache 和 PHP 服务解决了这个问题。
第 1 步:php artisan 存储:链接
第 2 步:在 storage 文件夹中创建这些文件夹
确保存储目录中的以下文件夹:
日志框架框架/缓存框架/会话框架/视图它对我有用
这也对我有用
在我的情况下,boostrap/cache 中的配置缓存文件全部丢失...所以我的解决方案是 php artisan config:cache
在 boostrap/cache 中重新创建缓存文件。
错误:'请提供有效的缓存路径。'错误。
如果出现这些类型错误,那么下面给出的解决方案:-
请在 storage/framework/cache 中创建数据文件夹