作者pinkisme ()
看板PHP
标题[请益] 用system和exec执行指令发生问题
时间Tue Apr 1 12:07:32 2008
因为要做资料库备份,所以写了一小段程式码
不过在执行备份的动作时会发生奇怪的问题
以下是程式码
<?php
$MYSQL_SERVER = 'localhost'; // mysql主机名称
$MYSQL_USER = 'root'; // mysql主机帐号
$MYSQL_PASSWD = 'password'; // mysql主机密码
$MYSQL_DBNAME ='msnsmdb'; // 使用资料库
$MYSQL_DBNAME_FILE = date('Ymd_His_');
$MYSQL_DBNAME_FILE.= $MYSQL_DBNAME.'.sql'; //设定备份档案名称(日期时间 + 资料
库名称)
//echo "Creating New Back Up Directory";
//echo "Using Directory : $DIRNAME";
@mkdir ($DIRNAME,0700);
//echo "Backing Up $MYSQL_DBNAME Databases on $HOSTNAME ";
$COMMAND_DO = "mysqldump -h".$MYSQL_SERVER." -u".$MYSQL_USER."
-p".$MYSQL_PASSWD." ".$MYSQL_DBNAME." > ".$MYSQL_DBNAME_FILE;//备份指令
/*因为直些执行指令似乎不行,所以写到批次档中执行*/
$batpath = "backup.bat";
$fp = fopen($batpath, "w+") or die("can't open file!");
fwrite($fp,$COMMAND_DO);
fclose($fp);
system($batpath,$retval); // 执行资料库备份
//echo "DONE!";
?>
本来是直接用system或exec执行$COMMAND_DO,
不过一直没办法产生结果,所以改成写到批次档去执行
写到批次档执行时看到了奇怪的东西
执行时的指令变成
C:\AppServ\www\MyData\mysqldump -hlocalhost -uroot -ppassword
1>20080401.sql
绿色的部分本来应该是-ppassword > 20080401.sql
可是却多了空格和1
如果直接执行backup.bat,也会出现空格和1,但是可以产生备份的档案
想请问一下有人知道是怎麽回是吗
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.156.75
1F:推 appleboy46:1> 标准输出 2> 错误输出,你说的 1 可加可不加 04/01 20:22
2F:→ pinkisme:可是他没有把结果输出到我的备份档耶 04/01 20:48
3F:→ pinkisme:可是直接执行批次档却可以,才觉得奇怪@@ 04/01 20:49
4F:推 appleboy46:mysqldump -u root -p密码 dbname > 20080401.sql 04/01 20:49
5F:→ appleboy46:你没指定 db Name 04/01 20:50
6F:→ pinkisme:照你说的做了,不过还是不行orz 04/02 00:56
7F:→ appleboy46:错误讯息? po一下错误讯息吧,我这样用都没问题 04/02 14:27
8F:→ pinkisme:恩..他没有显示错误讯息,只有产生档案,内容空的@@ 04/02 19:29