Я потратил несколько часов, пытаясь сделать эту работу, но безуспешно.Я искал часто задаваемые вопросы на этом сайте о том, как правильно отображать код в моем сообщении, но ничего не нашел, какие-либо советы, пожалуйста?
У меня есть следующая команда, которая отлично работает в командной строке на сервере Linux,но когда я передаю его в функцию php exec и запускаю его через apache на сервере linux, он показывает мне информацию об использовании, полученную вызываемым скриптом, вместо вывода этого скрипта.
myTool -arg1 "Arg1 value" -arg2 value2 -arg3 value3
Я пытался: отправить всю эту командную строку в exec
, отправив всю эту команду через escapeshellcmd в exec
, отправив все аргументы в одну строку (-arg1 "Arg1 value" -arg2 value2 -arg3 value3
) через escapeshellarg в exec
отправка аргументов индивидуально (например: -arg1 "Arg1 value"
) через escapeshellarg в exec
отправка аргументов индивидуально (например: -arg1 "Arg1 value"
) через escapeshellcmd в exec
результатлибо отсутствует вывод, либо информация об использовании вызываемого скрипта, что говорит о том, что аргументы не переданы правильно.
Вот код:
$data = array();
$commandexec = "/tools/myTool ";
$arg1 = "-arg1 \"Arg1 value\"";
$arg2 = "-arg2 value2";
$arg3 = "-arg3 value3";
$arguments_escaped = escapeshellarg($arg1). " ". escapeshellarg($arg2). " ".escapeshellarg($arg3);
$command_escaped_arguments = $commandexec . $arguments_escaped;
print "<br>command_escaped_arguments: ". $command_escaped_arguments ."<br>";
$result = exec($command_escaped_arguments, &$data);
print_r($data);
это вывод сценария php на сервер apache:
command_escaped_arguments: /tools/myTool '-arg1 "Arg1 value"' '-arg2 value2' '-arg3 value3'
Array ( [0] =>
[1] => myTool version 1.0
[2] => Usage: myTool -arg1 "Some value"
[3] => -arg3 option1|option2
[4] => [-arg2 value]
[5] => )
Кто-нибудь имеет представление, что мне не хватает?