У меня проблема, когда я пытаюсь выполнить следующую команду командной строки с 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
Я не знаю, что происходит.
Я не уверен, что дополнительные пространства могут возникнуть. Странно.
Остерегайтесь использования данных из $_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);