Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中进行数据库转储时,为什么需要提供完整的mysqldump路径_Php_Mysql_Mysqldump - Fatal编程技术网

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

在php中进行数据库转储时,为什么需要提供完整的mysqldump路径,php,mysql,mysqldump,Php,Mysql,Mysqldump,我试图在php类中创建一个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

我试图在php类中创建一个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);
但是当我给出mysqldump的完整路径时,转储文件将正确创建

$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中为这两种环境获取mysqldump路径吗?

您可以通过将
mysqldump
mysql
命令从
/usr/local/mysql/bin/
复制到
/usr/bin/
路径来避免路径。在
linux
上,您可以使用
exec(“哪个mysqldump”)
要获取mysqldump路径,在
windows上执行
$path=getenv('path')分解(“;”,$path)
,然后循环元素以查找
mysqldump
路径这看起来好像
$PATH
中的
mysqldump
/usr/local/mysql/bin/mysqldump
不同;e、 g.它可能是
/usr/bin/mysqldump
——显然每个可执行文件的工作方式都不同(可能是不同的版本?请参见
mysqldump--version
/usr/local/mysql/bin/mysqldump--version
提供的内容)。