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);

コマンドの結果を確認したい場合は、

エコー$output

于 2012-08-22T12:06:56.257 に答える