2013-07-04 2 views
0

Я пытаюсь запустить приложение - в частности, выделенный выделенный сервер - через веб-интерфейс. Я делаю это, используя следующий код:PHP Exec не запускает приложение

$old_path = getcwd(); 
chdir("[PATH]"); 
$tmp = exec("srcds -console -game tf +map ctf_2fort"); 
chdir($old_path); 

К сожалению, сайт зависает и никогда не загружается. Выполнение такой же точной команды в командной строке работает отлично, запуск exec("echo %cd%") выводит правильный путь, я могу запускать другие вещи (например, образец .bat, который просто отгоняет %time%) из папки, и так далее и т. Д.

Я был в состоянии сделать нагрузки на сайт, перенаправляя стандартный вывод на /dev/null/ (заменив $tmp = строку следующим :)

$tmp = exec("srcds -console -game tf +map ctf_2fort > /dev/null"); 

В то время как это позволяет сайт для загрузки, приложение никогда не запускать (и процесс не появляется в диспетчере задач).

Я пробовал вывод в файл, но это просто выводит две строки, первая говорит Using breakpad minidump system, вторая пустая. Он также не запускает приложение.

$tmp = exec("srcds -console -game tf +map ctf_2fort > tmp.txt"); 

Я в растерянности относительно того, что я должен делать - я довольно новыми для PHP, так что если есть что-то очевидно, что я не хватает, пожалуйста, так сказать.

ответ

0

Попробуйте добавить 2>&1 к команде. Вы можете также указать, если вы хотите, чтобы каждая строка вывода от того, что случилось, которое будет отображаться в виде массива, например, так:

$tmp = exec("srcds -console -game tf +map ctf_2fort 2>&1", $what_happened); 
print_r($what_happened); 

Если безопасный режим включен, вы можете столкнуться с некоторыми проблемами, хотя ... Если выше предложение не работает для вас, вы также можете проверить команды и/или passthru().

+0

К сожалению, у тех же проблем, что и раньше; страница никогда не загружается. Запись вывода в переменную просто возвращает массив длиной 0 (при перенаправлении stdout, поскольку он в противном случае не запускается, поэтому довольно очевидно, что вывод является нулевым) – Birjolaxew

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