Intereting Posts
Не удается получить страницу входа для перенаправления на защищенную страницу PHPWord: создание арабского текста справа налево Как использовать отдельные языковые файлы для многозадачных магазинов opencart? PHP + Jquery – передать значение через ajax в php и проверить переменную Ошибка импортера WordPress: максимальное время выполнения 60 секунд Редактирование существующей PDF-страницы с несколькими файлами с использованием FPDF и FPDI Apostrophe CMS: Вопросы для хостинга + возможность без участия Symfony? База данных в CSV (Готово) пытается сохранить файл в папку на сервере PHP Curl на 81 порт Как показать индикатор выполнения в загрузке файла ajax Echo 'string', в то время как каждая итерация длинного цикла (flush () не работает) Контейнер для инъекций зависимостей PHP xampp apache не работает err сообщение api ms win missing Разбор XML с PHP не работает PHP – объединить два массива (одинаковой длины) в один ассоциативный?

apache service php exec не работает

Я просмотрел все другие вопросы по этому поводу, но они не помогли, поэтому:

Я запускаю 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; ?> 

Попробуйте вышесказанное и посмотрите, что произойдет, вы должны получить ответ из командной строки, иначе, возможно, это может быть связано с разрешениями.