为什么在 php 中进行数据库转储时需要提供完整的 mysqldump 路径

Why should I need to give the full mysqldump path when doing a database dump in php

我正在尝试在 php class 中创建一个 mysql 数据库转储。

我正在执行以下代码,但只会创建一个空的转储文件。但是当我在命令行中执行它时,同样的命令工作正常。

$script = 'mysqldump -h ' . DB_HOST . ' -u ' . DB_USER . ' -p' . DB_PASSWORD . ' ' . DB_NAME . ' > ' . DB_DUMP_PATH . 'mysql-db-dump-' . date('Y-m-d') . '.sql';
exec($script);

但是当我给出 mysql转储的完整路径时,转储文件会正确创建。

$script = '/usr/local/mysql/bin/mysqldump -h ' . DB_HOST . ' -u ' . DB_USER . ' -p' . DB_PASSWORD . ' ' . DB_NAME . ' > ' . DB_DUMP_PATH . 'mysql-db-dump-' . date('Y-m-d') . '.sql';
exec($script);

但是我看了大部分的教程,他们只是使用mysqldump 命令。不是完整路径。这背后的原因是什么?我计划在 unix 和 windows 环境中使用它。

是否可以在 php 中获取两种环境的 mysql 转储路径?

您可以通过将 mysqldumpmysql 命令从 /usr/local/mysql/bin/ 复制到 /usr/bin/ 路径来避免路径。