Я попытался использовать 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
даже не вызовет программу.
редактировать
Даже exec('notepad.exe');
не работает. Что-то должно быть сделано с конфигурациями php
может быть?
Я уже сказал, что я новичок в функции exec()
. После того, как я сделал больше копания, я наткнулся на 2>&1
который нужно добавить в конце команды в exec()
.
Спасибо @mattosmat
за то, что вы указали это в комментариях. Я не пробовал это сразу, потому что вы сказали, что это команда Linux, я нахожусь в Windows.
Итак, что я обнаружил, команда на самом деле выполняется в фоновом режиме. Вот почему я не мог видеть, что это действительно работает, чего я ожидал.
Для всех вас, у кого была схожая проблема, я советую использовать эту команду. Он укажет на все ошибки, а также сообщит вам информацию / подробности о выполнении.
exec('some_command 2>&1', $output); print_r($output); // to see the response to your command
Спасибо за помощь всем, я ценю это;)
Вы также можете попробовать дать полный путь к двоичному файлу, который вы пытаетесь запустить. Это решило мою проблему при попытке использовать ImageMagick
.