Подтвердить что ты не робот

Php exec() не выполняет команду

Я попытался использовать exec() с 'whoami', чтобы проверить, работает ли он, и я получил результат

nt authority\system

Теперь мне нужно запустить файл .exe с параметрами php через exec().

Я попробовал это в командной строке , и он фактически запускает программу с заданными параметрами. Это пример команды.


ПРИМЕЧАНИЕ exe файл получает 3 входа (папка, имя_файла, report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml

Но когда я запускаю эту команду из файла php:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml');

ничего не происходит. Это первый раз, когда я использую функцию exec(), поэтому я не знаком с ее деталями. Что не так?

Я попытался использовать:

  • \\ вместо \
  • escapeshellarg() в каталоге
  • добавлено "" вокруг имен папок каталога

Не повезло

Добавление:

echo exec($command)  // echos < .... why?

или

exec($command, $output);
print_r($output);        // Array()

Я даже полностью изменил разрешение на файл для всех пользователей. Если я вызываю программу из command prompt, я вижу значок, появляющийся рядом с часами на секунду.

Но тот же вызов из php даже не вызовет программу.

Edit

Даже exec('notepad.exe'); не работает. Что-то нужно делать с конфигурациями php, может быть?

4b9b3361

Ответ 1

Я уже говорил, что я новичок в функции exec(). Проделав еще некоторое копание, я столкнулся с 2>&1, который нужно добавить в конце команды в exec().

Спасибо @mattosmat за то, что указали это в комментариях. Я не пробовал это сразу, потому что вы сказали, что это команда Linux, я нахожусь в Windows.

Итак, что я обнаружил, команда на самом деле выполняется в фоновом режиме. Вот почему я не мог видеть, что это действительно работает, чего я ожидал.

Для всех вас, у кого была схожая проблема, я советую использовать эту команду. Он укажет на все ошибки, а также сообщит вам информацию/подробности о выполнении.

exec('some_command 2>&1', $output);
print_r($output);  // to see the response to your command

Спасибо за помощь всем, я ценю это;)

Ответ 2

Вы также можете попробовать указать полный путь к двоичному файлу, который вы пытаетесь запустить. Это решило мою проблему при попытке использовать ImageMagick.