В настоящее время у меня есть эта проблема в PHP, я пытаюсь сделать простую веб-страницу, которая выполняет некоторый код в оболочке и показывает запущенный процесс
код, который я пытаюсь выполнить это
wmic -U User%Passwd //192.168.1.3 "select Caption from Win32_Process"
В оболочке он выполняется правильно (Ubuntu 14.04 LTS), но в PHP эти двойные слеши воспринимаются как комментарий, как в этом коде
exec('wmic -U User%Passwd //'.$IP.' "select Caption from Win32_Process"',$exit);
Однако двойная косая черта (//) комментирует остальную часть кода!
Как я могу переписать этот код, чтобы PHP интерпретировал эти двойные слэши не как комментарий, а как часть кода?
заранее спасибо
Вам нужно убежать от слеша /
символ с обратным слешем \
поэтому ваш новый код будет:
exec('wmic -U User%Passwd \/\/'.$IP.' "select Caption from Win32_Process"',$exit);
Из руководства по PHP:
Символ обратной косой черты имеет несколько применений. Во-первых, если это следует
не буквенно-цифровым символом, он убирает любое особое значение
этот персонаж может иметь. Это использование обратной косой черты как побег
применяется как внутри, так и вне классов персонажей.Например, если вы хотите сопоставить символ «*», вы пишете «*» в
шаблон. Это применимо независимо от того, будет ли следующий символ
в противном случае интерпретируется как метасимвол, поэтому всегда безопасно
перед не алфавитно-цифровым символом «\» указывается, что он обозначает
сам. В частности, если вы хотите сопоставить обратную косую черту, вы пишете
«\».
Других решений пока нет …