Помогите пожалуйста кто знает как это сделать. Я создаю тестовую систему и мне нужно чтобы она могла запускать на стороне клиента .exe файл. Пробовал следующий код:
<?php
exec("dir C:\\Lang\\TP\\run.bat");
?>
Выдается сообщение:
Warning: exec() [function.exec]: Unable to fork [dir C:\Lang\TP\run.bat] in C:\Inetpub\wwwroot\start.php on line 2
Еще пробовал с помощью JavaScript вот так:
<html>
<script language="JavaScript">
<!--
var activex = new ActiveXObject("WScript.Shell");
activex.Run("C:\\Lang\\TP\\run.bat");
//-->
</script>
<html>
Работает только если запускаю просто как HTML страницу. Если пытаюсь запустить как PHP страницу то выдается сообщение:
Line:6
Char:1
Code:0
Error:Невозможно создание объекта сервером программирования объектов
URL:http://localhost/run.php
ЧТО ДЕЛАТЬ? Заранее благодарю.
Запуск внешнего приложения
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
exec - выполняется исключительно на стороне сервера,
но скорей всего таки выполняется! И сообщение, которое выводится - это всего лишь предупреждение. Как с ним справиться - читать, например, тут (первая ссылка гугля, сам не проверял)
activeX - правильное решение, если ограничиваться клиентскими Windows-машинами
А не работает оно у тебя не из-за разницы PHP-HTML, а из-за разницы клиент-сервер.
Скорей всего у тебя сервер на твоём же компьютере и ты этого просто не чувствуешь, а просто открываешь HTML напрямую браузером, а PHP - через localhost. Попробуй HTML через локалхост (а ещё лучше на реальном сервере) - результат должен быть тот же.
А причина ошибки заключается в правах на запуск ActiveX на компьютере клиента.
Как правило ИЕ настроен так, чтобы какой-нибудь умник не повесил на своей странице скрипт, перегружающий комп, типа:
activex.Run("shutdown");
Что делать?
Если тебе это надо локально - добавь в своём ИЕ http://localhost в "Надёжные узлы", если не поможет - читай Предотвращение выполнения данных от Майкрософта, а так же гугль по точной фразе ошибки.
Если же надо, чтобы файл выполнялся на любой клиентской машине - то наверное потребуется какая-нибудь (чуть ли не майкрософтовская) сертификация.
но скорей всего таки выполняется! И сообщение, которое выводится - это всего лишь предупреждение. Как с ним справиться - читать, например, тут (первая ссылка гугля, сам не проверял)
activeX - правильное решение, если ограничиваться клиентскими Windows-машинами
А не работает оно у тебя не из-за разницы PHP-HTML, а из-за разницы клиент-сервер.
Скорей всего у тебя сервер на твоём же компьютере и ты этого просто не чувствуешь, а просто открываешь HTML напрямую браузером, а PHP - через localhost. Попробуй HTML через локалхост (а ещё лучше на реальном сервере) - результат должен быть тот же.
А причина ошибки заключается в правах на запуск ActiveX на компьютере клиента.
Как правило ИЕ настроен так, чтобы какой-нибудь умник не повесил на своей странице скрипт, перегружающий комп, типа:
activex.Run("shutdown");
Что делать?
Если тебе это надо локально - добавь в своём ИЕ http://localhost в "Надёжные узлы", если не поможет - читай Предотвращение выполнения данных от Майкрософта, а так же гугль по точной фразе ошибки.
Если же надо, чтобы файл выполнялся на любой клиентской машине - то наверное потребуется какая-нибудь (чуть ли не майкрософтовская) сертификация.
Огромное спасибо, на половину моих вопросов я нашел ответы в твоих советах. У меня 2 компьютера. На одном расположен сервер IIS и PHP а другой я использую как клиентскую машину. Отредактировал список надежных узлов и местной интрасети на компьютере с сервером и на клиентском. На компьютере с сервером как ты и обещал все заработало. Запускаю чрез localhost PHP файл в котором через include() подключаю скрипт запускающий внешнее приложение и все прекрасно. Но как ты и обещал на клинтской машине по прежнему весит это сообщение:Oscar писал(а):exec - выполняется исключительно на стороне сервера,
но скорей всего таки выполняется! И сообщение, которое выводится - это всего лишь предупреждение. Как с ним справиться - читать, например, тут (первая ссылка гугля, сам не проверял)
activeX - правильное решение, если ограничиваться клиентскими Windows-машинами
А не работает оно у тебя не из-за разницы PHP-HTML, а из-за разницы клиент-сервер.
Скорей всего у тебя сервер на твоём же компьютере и ты этого просто не чувствуешь, а просто открываешь HTML напрямую браузером, а PHP - через localhost. Попробуй HTML через локалхост (а ещё лучше на реальном сервере) - результат должен быть тот же.
А причина ошибки заключается в правах на запуск ActiveX на компьютере клиента.
Как правило ИЕ настроен так, чтобы какой-нибудь умник не повесил на своей странице скрипт, перегружающий комп, типа:
activex.Run("shutdown");
Что делать?
Если тебе это надо локально - добавь в своём ИЕ http://localhost в "Надёжные узлы", если не поможет - читай Предотвращение выполнения данных от Майкрософта, а так же гугль по точной фразе ошибки.
Если же надо, чтобы файл выполнялся на любой клиентской машине - то наверное потребуется какая-нибудь (чуть ли не майкрософтовская) сертификация.
Невозможно создание объекта сервером программировния.
А ведь по задумке мне и надо как раз чтобы этот скрипт выполнялся на группе клиентских машин на которых пользователи будут проходитьт тест. Тем не менее ты мне очень помог. Спасибо!
