2015-03-24 2 views
0

Я пытаюсь запустить исполняемый файл C++, который у меня есть на моем компьютере, через мой PHP-интерфейс. У меня нет прав администратора на компьютере, на котором размещается мой PHP, и поэтому не может добавить соответствующие элементы в мой PATH для моего C++.Использование одной командной строки через php

Я могу вызвать функцию exec в PHP и запустить свою программу через командный файл. В моем пакетном файле я могу установить свою переменную пути в том, что мне нужно.

Вот что я сейчас делаю (с runVideoparser быть пакетный файл):

exec("C:\\Users\\hewittjc\\Desktop\\runVideoParser", $output, $return); 
echo "Program returned $return."; 

Вышеприведенные прекрасно работает при передаче фиксированного параметра на мой C++ в пакете.

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

Так что мой вопрос, как я могу:

1) Откройте командную строку с помощью PHP (я бегу окна)

2) Установить мой переменную пути в командной строке с помощью PHP

3) Затем, используя это же приглашение для сохранения переменной пути, запустите мою программу, передав ей требуемый аргумент.

Я полагаю, что я мог бы сгенерировать партию на моем PHP, а затем запустить ее, но я ищу более элегантные решения.

ответ

1

В теории, вы можете сделать что-то вроде этого:

$old_path = getenv("PATH"); 
$new_path = "/my/additional/path:$old_path"; 
putenv("PATH=$new_path"); 
system("command -with flags -and args -and such"); 

Однако this won't work если хост машина имеет безопасный режим, и PATH не в safe_mode_allowed_env_vars директивы.

Смежные вопросы