2012-08-22 37 views
0

我有一些代碼在我postwwwacct腳本不起作用,它不會導入SQL文件PHP腳本導入文件在MySQL

shell_exec("cd /home/".$opts['user']."/public_html/sbans/sql/"); 
$command="mysql -u ".$opts['user']." -p".$opts['pass']." ".$opts['user']."_bans < data.sql"; 
shell_exec($command); 

帳戶創建後,但是我可以在SSH

手動運行
cd /home/jason/public_html/sbans/sql/ 
mysql -u jason -pmypass jason_bans < data.sql 

然後工作。

postwwwacct中的php代碼有什麼問題?

對不起,重新編輯修改,但該文件沒有PHP擴展 我用

#!/usr/local/bin/php -q 
+0

你什麼錯誤?你有權限運行shell命令嗎? –

+0

'echo $ command;'看看它是否是有效的命令 – Leri

+0

我不能看到輸出,因爲它通過帳戶創建時通過cpanel運行 –

回答

0

問題是,shell_exec執行cd並結束,因此沒有找到並執行與sql導入的命令並失敗。

嘗試這樣的事:

<?php 
$command="mysql -u ".$opts['user']." -p".$opts['pass']." ".$opts['user']."_bans < data.sql"; 
$output = shell_exec("cd /home/".$opts['user']."/public_html/sbans/sql/ && ".$command); 

,如果你想看到你的命令的結果只是做

回聲$輸出

+0

Legend - dairy :) –

1

了我的頭頂部手動調用PHP編譯器,你確定該文件data.sql是在所有不同的用戶的SQL文件夾?您還可以創建一個單獨的bash腳本,並把它在你的腳本,在此之前,爲我工作,你只是傳遞的參數,像這樣的東西:

$t = shell_exec("path/command.sh '$opts['user']' '$opts['pass']' 2>&1"); 
echo $t 

,並在bash腳本開始這樣得到變量: #/斌/慶典

#Get variables needed 

user=$1 
pass=$2 

然後,您可以繼續使用該變量作爲任何正常的bash的變量,如果仍然沒有在最後爲你工作becouse 2> & 1你的shell_exec命令可以很容易地進行調試。

祝你好運!

+0

我正在複製sql文件到每個用戶目錄使用以前的shell命令,所以它肯定存在。編號喜歡堅持使用PHP,因爲其餘的代碼是。 –

+0

我仍然強烈建議你在shell_exec命令後面添加2>&1,它會打印出錯誤,如果你回顯$命令,你將獲得更多關於它失敗的原因 – patrickdamery