В PHP передать аргумент из функции в скрипт bash

У меня есть система меню на веб-странице, которая позволяет пользователю выбирать из нескольких вариантов. Когда опция выбрана, я хочу передать ее как аргумент через функцию. Я хочу оценить, чтобы увидеть, что было выбрано, и затем выполнить мой скрипт, предоставляющий arg. Я новичок в PHP, но рад учиться. Ниже моя лучшая попытка после переваривания связанных объяснений.

public function getData($args=array()) {

if(isset($args["what"])){
exec(
'/home/foo/myscript.((string)$args["what"]');
}
else{
exec(
'/home/foo/myscript()');
}
}

Я подозреваю, что между сценарием оболочки и аргументом не правильно учтено пространство, но все кажущиеся разумными варианты, которые я пробовал, терпят неудачу. Я на правильном пути или я должен попробовать это по-другому все вместе?

0

Решение

exec('/home/foo/myscript.((string)$args["what"]');

Проблема в том, что вы все еще находитесь в своей строке, когда начинаете пытаться объединить PHP. Сначала закройте строку.

exec('/home/foo/myscript ' . (string)$args["what"] );

Затем вы захотите быть намного более безопасным при передаче аргументов в сценарии, чтобы они не были неправильно истолкованы. Проверять, выписываться escapeshellarg(), http://php.net/manual/en/function.escapeshellarg.php

exec('/home/foo/myscript ' . escapeshellarg((string)$args["what"]) );

Кроме того, вам, вероятно, не нужно (string) поскольку escapeshellarg() все равно использует только строки. Все, что находится в этом параметре, будет приведено к строке.

exec('/home/foo/myscript ' . escapeshellarg($args['what']) );
0

Другие решения

Других решений пока нет …