У меня есть код в моем 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
проблема в том, что 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);
и если вы хотите увидеть результат своей команды, просто выполните
echo $ output
Сверху моей головы, вы уверены, что файл 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, и если они все еще не работают для вас, потому что 2> & 1 в конце вашей команды shell_exec, вы сможете отлаживать ее намного проще.
Удачи!