2017-08-07 85 views
1

我想使用代碼備份本地主機上的表。由xampp錯誤執行shell通過php

$dbhost = '127.0.0.1'; 
$dbuser = 'root'; 
$dbpass = ''; 
$dbname = 'snapmall'; 
$dbtable = 'tb_translation'; 
$dbpath = 'D:test/new/'; 

//mysqldump -u root -p snapmall ps_translation > D:/test/new/ps_translation.sql 
$command = "mysqldump -u $dbuser -p $dbpass $dbname $dbtable > ".$dbpath.$dbtable.".sql"; 

shell_exec($command); 

我對XAMPP的殼體試驗指揮它工作正常,但是當我被命令了shell_exec()運行它有一個結果的文件是空的。

回答

0

試試這個,添加2> & 1至從你的命令的輸出:

$output = shell_exec($command." 2>&1"); 

然後張貼在這裏。

您需要能夠通過之前調用xamp來執行您的命令,因爲您的exec正在訪問bash,而不是xampp,換句話說,您的exec必須可以訪問這組基本命令,配置您的PATH變量。

+0

結果是emty,但我嘗試:exec('ls -l 2>&1',$ output);的print_r($輸出);並收到消息:Array([0] =>'ls'不被識別爲內部或外部命令,[1] =>可操作的程序或批處理文件。) –

+0

因此,您的PHP exec無法在shell上工作,您需要改變你的PATH變量並且能夠執行任何命令,當你這樣做的時候,它會起作用;) – k3rn3llp4n1c

+0

我運行命令:mysqldump -u root -p leo_snapmall ps_translation> D:/www/prestashop/ps_translation.sql by cmd it工作發現但我的代碼不工作:exec('mysqldump -u root -p leo_snapmall ps_translation> D:/www/prestashop/ps_translation.sql 2> &1'); =>錯誤消息:'mysqldump'不被識別爲內部或外部命令, 可操作的程序或批處理文件 –