美文网首页LaravelPHP经验分享Laravel开发实践
spatie/laravel-backup无法在控制器中调用Ar

spatie/laravel-backup无法在控制器中调用Ar

作者: 甘伍觉莫 | 来源:发表于2018-12-26 21:39 被阅读6次

    在项目中想要做数据库备份, 使用了 spatie/laravel-backup 这个包来做处理.

    需要在页面上点击一个按钮然后把生成好的数据库压缩包下载下来.

    代码如下:

    class SystemController extends Controller
    {
        public function databaseBackup()
        {
            set_time_limit(0);
    
            // 下载之前先清理以前的备份
            Storage::deleteDirectory('backup');
    
            Artisan::call('backup:run', [
                '--only-db' => '1',
                '--disable-notifications' => '1',
            ]);
    
            $files = Storage::files('/backup');
    
            $recentFile = array_pop($files);
    
            return response()->download(storage_path('app/public/' . $recentFile));
        }
    }
    
    

    在本地运转良好的代码, 到了线上测试环境却报了一个让人摸不着头脑的异常

    "The file "/www/wwwroot/storage/storage/app/public/" does not exist"
    

    使用命令行可以进行备份, 通过控制器调用却不行.

    最后确定原因是因为线上环境将一些php函数禁用了, 我这里是需要放开 proc_open 这个函数, 之后重启php-fpm, 重启nginx就可以了.

    如果有帮助到你, 请点个赞吧.

    相关文章

      网友评论

        本文标题:spatie/laravel-backup无法在控制器中调用Ar

        本文链接:https://www.haomeiwen.com/subject/rwgklqtx.html