0

我的postwwwacct脚本中有一些代码不起作用,它不导入 sql 文件

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

然后工作。

中的php代码有什么问题postwwwacct

很抱歉重新编辑您的编辑,但该文件没有 php 扩展名,我使用手动调用 php 编译器

#!/usr/local/bin/php -q
4

2 回答 2

1

在我的脑海中,您确定文件 data.sql 位于所有不同用户的 sql 文件夹中吗?您还可以创建一个单独的 bash 脚本并在您的脚本中调用它,这对我之前有用,您只需使用以下内容传入参数:

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

并在 bash 脚本中像这样开始获取变量:#!/bin/bash

 #Get variables needed

 user=$1
 pass=$2

然后,您可以继续将变量用作任何普通的 bash 变量,如果由于 shell_exec 命令末尾的 2>&1 它仍然不适合您,您将能够更轻松地调试它。

祝你好运!

于 2012-08-22T12:03:29.190 回答
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);

如果您想查看命令的结果,请执行

回声$输出

于 2012-08-22T12:06:56.257 回答