我有一个非常简单的 PHP exec
脚本,调用 mysql
命令:
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'mypass';
$db = 'job';
$file ='job_create.sql';
$mySQLDir='"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql"';
if ($dbpass != '') {
$cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' --password='.$dbpass.' < "'.dirname(__FILE__).'\\'.$file.'"';
} else {
$cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' < "'.dirname(__FILE__).'\\'.$file.'"';
}
// echo $cmd;
exec($cmd,$out,$retval);
我希望上面的脚本调用mysql
命令,传入用户身份验证信息并即时运行job_create.sql
。
唯一的问题是它不起作用,因为 job_create.sq
l 没有正常运行。 .我尝试使用以下脚本直接从命令行调用 mysql
命令,
bin\mysql.exe -h localhost --user=root --password=mypass < "job_create.sql"
并且有效。
知道如何解决这个问题吗?
编辑:我从 PHP 命令行调用这个脚本。即,PHP.exe installdb.php
最佳答案
我找到了解决方案
问题是您需要明确地将 $cmd
包含在“”中。即,
exec('"'.$cmd.'"',$out ,$retval);
这是有效的完整代码:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$db = 'job';
$file =dirname(__FILE__).'\\'.'job_create.sql';
$mySQLDir='"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysql.exe"';
if ($dbpass != '') {
$cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' --password='.$dbpass.' < "'.$file.'"';
} else {
$cmd = $mySQLDir.' -h '.$dbhost.' --user='.$dbuser.' < "'.$file.'"';
}
echo $cmd;
exec('"'.$cmd.'"',$out ,$retval);
echo "\n";
echo ($retval);
?>
关于php - 使用 PHP exec 调用 MySQL exe 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814586/