在我尝试了许多解决方案后,这个问题不断出现。我正在尝试
mysqldump
我的数据库并使用 PHP/Laravel 中的单个命令使用 gzip 对其进行压缩,这是我尝试的最新命令:
$filename = "backup-" . Carbon::now()->format('Y-m-d') . ".gz";
$command = "mysqldump -u " . env('DB_USERNAME') . " -p'" . env('DB_PASSWORD') . "' " . env('DB_DATABASE') . " --no-tablespaces -C | gzip > " . public_path("DBbackup\/") . $filename;
$returnVar = NULL;
$output = NULL;
exec($command, $output, $returnVar);
它返回
2
而不是 0
意味着命令失败,并且输出什么也没有。
然后我尝试返回命令来检查像
env(..)
这样的每个变量是否正确等等,但一切都很好,所以我自己尝试了该命令,它起作用并创建了 .gz
文件。我不明白为什么使用 PHP 不起作用?
我没有足够的声誉来发表评论,但有一件事很可能导致您遇到的问题。
您无法在生产环境中加载配置文件之外的环境变量。您实际上应该对这些变量进行硬编码,创建引用它们的配置文件或使用现有的配置文件database.php
在配置文档中没有明确提及,但它确实这么说:
.env 文件中列出的所有变量都将加载到 当您的应用程序收到请求时,$_ENV PHP 超级全局。 但是,您可以使用 env 函数从这些中检索值 配置文件中的变量。
我认为这个措辞暗示了这个安全功能,因为它说你可以在配置文件中使用 env 函数,而不是在应用程序中的任何地方。可能在某个地方明确说过,但由于某种原因我找不到它。