2012-08-22 34 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