работа с призрачными пространствами командной строки php

1

У меня проблема, когда я пытаюсь выполнить следующую команду командной строки с php exec:

    $instruction="mpirun -n 2 raxmlHPC-MPI ­-s ".$uploadfile." ­-p 12345 ­-m PROTGAMMAAUTO --­­auto­-prot=".$_POST["selectCriteria"]." ­-n outfile -# 2";
exec($instruction);

Я печатаю переменную, которую хочу выполнить, и она добавляет некоторые пробелы:

mpirun -n 2 raxmlHPC-MPI  ­-s /home/compartido1/workspace/raxml/uploaded_files/user_1449959556Alignment.fasta  ­-p 12345 ­ -m PROTGAMMAAUTO --­­ auto­ -prot=aicc  ­-n outfile -# 2

Я не знаю, что происходит.

Теги:
command-line

1 ответ

1
Лучший ответ

Я не уверен, что дополнительные пространства могут возникнуть. Странно.

Остерегайтесь использования данных из $_POST напрямую и без ограничений.

Удалите его правильно, используя escapeshellcmd().

Я переписал команду с помощью конкатенации строк для создания команды.

Возможно, это решает проблему. Пожалуйста, попробуйте.

$command = 'mpirun';
$command .= ' -n 2 raxmlHPC-MPI';
$command .= ' ­-s ' . $uploadfile;
$command .= ' -p 12345';
$command .= ' ­-m PROTGAMMAAUTO';
$command .= ' --­­auto­-prot=' . $_POST['selectCriteria'];
$command .= ' ­-n outfile';
$command .= ' -# 2';

$escaped_command = escapeshellcmd($command);

exec($escaped_command);
  • 0
    он близок к решению, но в первой части команды он ставит «\» в конце $ workD, это полная командная строка: $ command = 'cd'. $ workD. ';'; $ command. = '/usr/local/openmpi-1.6.4/bin/mpirun'; $ command. = '-n 2 raxmlHPC-MPI'; $ command. = '-s'. $ Uploadfile; $ command. = '-p 12345'; $ command. = '-m PROTGAMMAAUTO'; $ command. = '--auto-prot ='. $ _POST [ 'selectCriteria']; $ command. = '-n outfile'; $ command. = '- # 2';
  • 1
    Я сделал это, спасибо большое!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню