php - 在 PHP 中使用 mysqldump 而不使用整个路径

标签 php mysql laravel

我正在尝试在 Laravel 中制作一个简单的程序,允许用户单击一个按钮,并在本地生成数据库的备份 SQL。

$command = "/usr/local/mysql/bin/mysqldump --user=" . env('DB_USERNAME') ." --password=" . env('DB_PASSWORD') . " --host=" . env('DB_HOST') . " " . env('DB_DATABASE') . "  > " . storage_path() . "/" . $filename;

$returnVar = NULL;
$output = NULL;
exec($command, $output, $returnVar);

这是我当前的代码,正如你所看到的,我已经指定了 mysqldump 的整个路径,如果我不这样做,它只会返回一个空的 .sql。当我在终端中运行相同的命令(没有整个路径)时,它可以完美运行,现在此代码将在本地不同的环境(Windows、Linux、Mac)上运行,并且 mysqldump 的路径在每个环境中都会不同。

有没有办法可以在不指定整个路径的情况下实现此目的?

最佳答案

您可以使用另一个环境变量,默认为“mysqldump”。

但是,您不应直接在代码中使用环境变量,而应将它们加载到配置文件中的配置参数中。一旦配置被缓存,env()将不起作用。

但是,根本问题是 /usr/local/mysql/bin 不在 Web 用户的 PATH 变量中。 PHP exec $PATH variable missing elements

关于php - 在 PHP 中使用 mysqldump 而不使用整个路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52227670/

相关文章:

PHP PDO 无法获取 OUT 参数值

PHP is_writable() 返回 true 但 file_put_contents() 返回 false

mysql - 我如何在Mysql中的字符串末尾插入反斜杠?

php - 将静态路由添加到应该是动态的路由中?

php - 如果以后的记录无法添加到 Laravel 5,如何回滚新记录?

javascript - 从数据库中排序选择框选项

phpbrew php7 抛出 gnutls_handshake() 失败 : Illegal parameter

php - 如何使用 PHP 向 JSON 对象添加元素?

java - 根据表单值从数据库中获取数据

mysql - 查询元数据键不存在的行