我刚刚
git clone
我的一个存储库包含 Laravel 5.1 项目。我已经完成了正常的步骤来启动并运行它(设置网络服务器、数据库等)。我现在已访问我配置的网址,但收到以下错误消息:
ErrorException in compiled.php line 6648:
file_put_contents(/3c7922efc24ab13620cd0f35b1fdaa61): failed to open stream: Permission denied
知道它试图访问哪个文件夹吗?
我用这个解决方案解决了问题,并澄清如果您有 Windows,则应用第 1 行和第 3 行,它的工作原理是相同的。
php artisan cache:clear
chmod -R 777 storage/
composer dump-autoload
为了解决这个问题,我需要创建一些安装中缺少的文件夹。您需要 www 用户可以读取和写入以下文件夹:
/storage
/storage/cache
/storage/framework
/storage/framework/sessions
/storage/framework/views
/storage/framework/cache
/storage/logs
此外,将文件夹权限设置为
775
。从根目录运行命令:sudo chmod -R 755 storage
如果没有任何帮助,并且如果您使用 docker 在 Windows 上工作,则可能是符号链接错误的问题,您可以尝试:
ln -s /var/www/storage/app/public /var/www/public/storage
之后:
chown -R $USER:www-data storage
chmod -R 777 storage
在 docker bash 上。
我在我的 localhost 中遇到了类似的问题,问题是我试图在我的
php.ini文件中上传一个大于
upload_max_filesize
的文件。
只需将其更新为更大的值并重新启动我的服务器就可以解决问题,如果您遇到类似的问题,可能就是这种情况
如果您使用的是 ubuntu,很可能您必须授予该文件夹存储权限
cd 进入项目并 使用命令 -> sudo chmod 755 storage/*
如果您使用的是启用了 SELinux 的 Linux 发行版,则您需要执行以下操作:
sudo chcon -R -t httpd_sys_rw_content_t /var/www/html/my-app/storage
sudo chown -R nginx /var/www/html/my-app/storage
sudo chmod -R u+w /var/www/html/my-app/storage
这应该为存储目录设置正确的上下文,允许 Web 服务器写入它。
我最近在测试中遇到了这个问题,并通过以下方式解决了它:composer dump-autoload
这就是我解决类似问题的方法,因为我无法访问终端来运行
sudo chown -R www-data:www-data /thedirectory
在
config/filesystem.php
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
然后在我的上传控制器中
use Illuminate\Support\Facades\Storage;
$file_path= Storage::path('public/importable');
if (!is_dir($file_path)) {mkdir( $file_path,0775, true);}
如果您在尝试植入 CSV 文件时在 Laravel(9 或更高版本)上遇到此问题,并且某些文件可以工作,但有些文件会抛出此错误,我发现只需运行即可
php artisan cache: clear
成功了
对我来说,这是因为单个文件由root拥有......在我设置文件时的某个时刻写入,并且应用程序无法读取它。解决方案可能是改变所有权、摆脱它等等。
对我来说,解决方案是更改 laravel 项目的文件夹所有者。确保是您自己的用户而不是 root:www-data。
sudo chown -R username:group directory
在正在触发的目录下执行以下命令检查权限:
ls -lah
如果有任何问题,您可以通过以下方式纠正:
sudo chown -R username:group directory