#php #windows
Вопрос:
Я застрял с этим надолго.
Я создаю кроссплатформенное приложение, которое поможет запускать определенные команды в Linux или Windows. Он был создан для Windows с использованием PHP.
В Linux это работает просто отлично.
Но в Windows, когда я пытаюсь выполнить приведенную ниже команду — это просто не работает
$command = ""C:Program Filessome folderapp.exe" -B backup c:directoryfile.bak";
$output = $exit_code = null;
exec("start ".$command, $output, $exit_code);
Приведенный выше код работает, если я передаю команду Linux.
В Windows я получаю следующую ошибку:
Когда я пытаюсь зарегистрировать команду перед ее выполнением, я получаю значение команды, переданное как:
^"C:^Program Files^some folder^app.exe^" -B backup c:^directory^file.bak
Странно.
Я искал, и никакие решения, найденные в Интернете, не сработали 🙁
Комментарии:
1. Попробуйте использовать обычные косые черты вместо обратной косой черты
2. Это сработало. Кроме того, я заметил, что в другом классе перед передачей команды я избегал команды. Теперь исправлено. Если вы опубликуете свой ответ в качестве ответа, я могу его принять. @PhilipF.
Ответ №1:
Как упоминалось в моем комментарии, вы должны использовать обычные косые черты (‘/’) вместо обратных косых черт (‘/’).
Ваша команда должна выглядеть так:
$command = ""C:/Program Files/some folder/app.exe" -B backup c:/directory/file.bak";
Это связано с тем, что обратная косая черта используется для экранирования символа.