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
, может быть?
Ответы
Ответ 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
.