Вы не можете. Но вы можете запустить собственную оболочку, например c:\mingw\bin\sh -c 'set'
. Это потребует Mingw на вашей машине, конечно.
При использовании Cygwin это будет:
shell_exec("C:\cygwin\bin\bash.exe --login -c '/cygdrive/c/cygwin/bin/convert.exe --version'");
Существует ограничение на длину командной строки, поэтому я бы не рекомендовал помещать туда сам скрипт, если он больше, чем просто строка. Параметры сразу после имени интерпретатора сценария оболочки предназначены для интерпретатора. Если вы хотите передать аргументы в скрипт, который выполняет интерпретатор, он должен быть внутри кавычек, то есть сразу после «.exe» в примере преобразования.
Вы также можете передать сценарий интерпретатору сценария оболочки. Таким образом, вам не нужно будет записывать его в файл, и вы все равно сможете использовать длинный скрипт.
т.е:.
$ echo "echo 'Hello world';" | sh
Hello world
См. http://php.net/manual/en/function.proc-open.php о том, как использовать каналы в PHP.