在php中进行数据库转储时,为什么需要提供完整的mysqldump路径
我试图在php类中创建一个mysql数据库转储 我正在执行以下代码,但只会创建一个空转储文件。但是,当我在命令行中执行相同的命令时,它可以正常工作在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
$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
提供的内容)。