Я просмотрел все другие вопросы по этому поводу, но они не помогли, поэтому:
Я запускаю xampp (lite) на машине Windows Server 2003 внутри домена, apache устанавливается как служба. Проблема заключается в том, что функции PHP exec, system, passthru и т. Д. Ничего не делают, никаких сообщений об ошибках (уровень протокола apache отлаживается, php error_reporting – E_ALL), никакого выполнения программы, ничего, он действует так, как если бы вызов функции wasn ' там
Я пробовал разные подходы: exec, system, ..; proc_open и COM- объект WScript.Shell , ничего не работало. Я пытался использовать абсолютный путь, давал разрешения пользователю, пытался тонны разных .exe делал разные вещи, ничего не работало, ничего не выполнялось.
Я дал службе Apache свое имя пользователя ; дал ему собственный пользователь Apache ; дал пользователю системы и отметил « Разрешить взаимодействие с рабочим столом ».
php safe_mode отключен , также функции не отключены.
При запуске apache NOT как в качестве сервиса все работает отлично.
Любая идея, что может быть неправильным?
ТИА
Если вы попытаетесь запустить приложения GUI из службы в Vista, у вас будет много проблем. В качестве функции безопасности Vista обеспечивает взаимодействие служб с настольным компьютером с помощью функции «Интерактивные службы обнаружения».
Это означает, что если вы используете PHP как модуль службы Apache, вы не сможете запускать приложения с графическим интерфейсом, используя любой метод. Такой вид просто не сработает:
$ WshShell = новый COM («WScript.Shell»); $ oExec = $ WshShell-> Run ("notepad.exe", 7, false);
Итак, если вы хотите использовать Apache / PHP в качестве прокси для запуска графических приложений, вам нужно будет запустить Apache в качестве консольного приложения.
Во-первых, если Apache уже установлен как услуга, вам необходимо установить его тип запуска «вручную», используя оснастку служб. (% SystemRoot% \ system32 \ services.msc) Поиск служб в окне поиска в меню «Пуск».
Затем добавьте ярлык на C: \ apache \ bin \ httpd.exe (или где бы он ни находился Apache) в папку автозагрузки и установите этот ярлык, чтобы начать свертывание. Вы можете использовать приложение, подобное TrayIt! чтобы заставить Apache зайти в системный лоток.
Затем используйте любой из методов, описанных на веб-сайте PHP, и вы сможете открыть приложение Windows из PHP и посмотреть его графический интерфейс.
Проверьте, что ваш файл PHP.ini просто отключает те функции, о которых вы упомянули, в запрещенной настройке. Однако не что-то стандартное из выпуска XAMPP, но стоит проверить.
Вы говорите, что вы не получаете никаких ошибок, я предполагаю, что ваш сервер настроен как служба, поэтому любые команды, отправленные с использованием exe, system, passthru и т. Д., Будут выполняться в фоновом режиме, поэтому вы не увидите их, но вы должны уметь записывать данные.
<?php //Start an object to capture data. ob_start(); //Check we have access to the command line. exec("ping google.com -n 1"); //Capture the output. $output = ob_get_clean(); //Let's display it. echo $output; ?>
Попробуйте вышесказанное и посмотрите, что произойдет, вы должны получить ответ из командной строки, иначе, возможно, это может быть связано с разрешениями.