作者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
推 appleboy46:1> 標準輸出 2> 錯誤輸出,你說的 1 可加可不加 04/01 20:22
→ pinkisme:可是他沒有把結果輸出到我的備份檔耶 04/01 20:48
→ pinkisme:可是直接執行批次檔卻可以,才覺得奇怪@@ 04/01 20:49
推 appleboy46:mysqldump -u root -p密碼 dbname > 20080401.sql 04/01 20:49
→ appleboy46:你沒指定 db Name 04/01 20:50
→ pinkisme:照你說的做了,不過還是不行orz 04/02 00:56
→ appleboy46:錯誤訊息? po一下錯誤訊息吧,我這樣用都沒問題 04/02 14:27
→ pinkisme:恩..他沒有顯示錯誤訊息,只有產生檔案,內容空的@@ 04/02 19:29