[請益] 用system和exec執行指令發生問題

看板PHP作者時間17年前 (2008/04/01 12:07), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
因為要做資料庫備份,所以寫了一小段程式碼 不過在執行備份的動作時會發生奇怪的問題 以下是程式碼 <?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

04/01 20:22, , 1F
1> 標準輸出 2> 錯誤輸出,你說的 1 可加可不加
04/01 20:22, 1F

04/01 20:48, , 2F
可是他沒有把結果輸出到我的備份檔耶
04/01 20:48, 2F

04/01 20:49, , 3F
可是直接執行批次檔卻可以,才覺得奇怪@@
04/01 20:49, 3F

04/01 20:49, , 4F
mysqldump -u root -p密碼 dbname > 20080401.sql
04/01 20:49, 4F

04/01 20:50, , 5F
你沒指定 db Name
04/01 20:50, 5F

04/02 00:56, , 6F
照你說的做了,不過還是不行orz
04/02 00:56, 6F

04/02 14:27, , 7F
錯誤訊息? po一下錯誤訊息吧,我這樣用都沒問題
04/02 14:27, 7F

04/02 19:29, , 8F
恩..他沒有顯示錯誤訊息,只有產生檔案,內容空的@@
04/02 19:29, 8F
文章代碼(AID): #17yRKAXv (PHP)
文章代碼(AID): #17yRKAXv (PHP)