2016-08-29 5 views
0

Я пытаюсь сцепить терке затем carácter «>» в ​​строкуНевозможно напечатать специальный символ в PHP

Я использую код, но выход выглядит иначе, как я хочу,

<?php 
$target_file="home.txt" 
$caract = htmlspecialchars(">"); 
$command = escapeshellcmd('sudo python test.py '.$target_file.$caract.' out.txt'); 
$output = shell_exec($command); 
echo $command; 
?> 

также я попробовал «& GT», но он дает те же результаты

здесь выход эхо $ команды; как это:

sudo python test.py home.txt \>\; out.txt 

и я хочу это так:

sudo python test.py home.txt > out.txt 
+1

Не упаковывайте знак '>' в 'escapeshellcmd', функция точно выполняет то, что он должен делать, * escape *. –

+0

Вы не генерируете HTML-код в опубликованном вами коде. Почему вы используете ['htmlspecialchars()'] (http://php.net/manual/en/function.htmlspecialchars.php)? – axiac

+0

Основываясь на том, что Шарлотта сказала, что вы должны использовать 'escapeshellarg' только для имени файла, так что это' 'sudo python test.py '.escapeshellarg ($ target_file).' > out.txt'' Нет необходимости избегать текстовых литералов только входных переменных. – ArtisticPhoenix

ответ

1

Обычно вы должны вызвать EscapeShellCmd, если вы используете вход пользователя в составе исполняющего команды. Если вы этого не сделаете, вам нужно просто вызвать shell_exec (команда);

shell_exec('sudo python test.py ' . $target_file . ' > out.txt'); 
1

Не используйте htmlspecialchars(), как shell_exec не понимает HTML.

Вы должны использовать только код, предоставленный @ArtisticPhoenix: shell_exec('sudo python test.py '.escapeshellarg($target_file).' > out.txt'); Надеюсь, что это поможет!

Смежные вопросы