我正在网上制作备份和恢复phpmyAdmin数据库(实际上只有一个数据库)我制作了两个.bat文件,用exec(file.bat)
的php文件执行它们第一个拥有名称backup.bat,它包含以下代码:
Set Fecha=%Date:~0,2%%Date:~3,2%%Date:~6,4%
Set Hora=%Time:~0,2%%Time:~3,2%
mysqldump -u root --password="" dbceleues > C:\xampp\htdocs\SysWebCELEUES\BackUp\dbceleues%Fecha%%Hora%.sql
我有一些问题试图执行第二个文件“restore.bat”我上传dbceleues.sql与表单上的输入文件,我得到方法“发布”这:
$file=$_FILES['archivo']['tmp_name'];
$name=$_FILES['archivo']['name'];
然后我这样做:
chdir('C:\xampp\mysql\bin');
exec("restore.bat",$name);
或者这个:
chdir('C:\xampp\mysql\bin');
exec("restore.bat",$file);
我已使用此代码修改了第一个exec的文件:mysql -u root --password="" -B dbceleues < C:\xampp\htdocs\SysWebCELEUES\BackUp\%1%
,第二个文件包含:
mysql -u root --password="" -B dbceleues < %1%
问题出现了,无论我做什么,参数都没有收到,只有我把这个位置静态像这样:
C:\xampp\htdocs\SysWebCELEUES\BackUp\dbceleues200120161245.sql
蝙蝠完美无缺!
因此,问题是尝试将参数发送到.bat文件
有人可以帮帮我吗?
答案 0 :(得分:1)
exec()没有将第二个参数传递给命令。请检查php manual for function exec
您应该这样称呼它:
exec("restore.bat $file");
甚至更好:
exec('restore.bat "' . $file . '"');
在批处理文件中,参数变量只在数字之前使用百分号,如下所示:
mysql -u root --password="" -B dbceleues < %1