spatie/laravel-backup无法在控制器中调用Artisan命令备份

在项目中想要做数据库备份, 使用了 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就可以了.

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容