Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запуск файла .CMD или .EXE на стороне сервера через PHP
Форумы портала PHP.SU » » Операционная система и системные вызовы » Запуск файла .CMD или .EXE на стороне сервера через PHP

Страниц (1): [1]
 

1. awe007 - 25 Марта, 2011 - 11:20:52 - перейти к сообщению
Добрый день. Помогите пожалуйста решить задачку.
Есть сервер на Windows 2003, поднят Apache 2.2 +PHP 5.3.2
опубликован наружу.. Необходимо сделать так, чтобы при заходе на определенный адрес (типа www.server.ru\test.php) на сервере запускался и выполнялся бы нужный мне скрипт (test.exe или test.php)
Я пробовал Код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <? echo exec("test.cmd"); ?>

и
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php runAsynchronously("test.exe"); ?>

и



но в итоге файл выполняется в браузере на стороне клиента, а не на сервере.

Как правильно через PHP запустить файл именно на сервере? Т.е. чтобы на сервере всплывало черное окошко командной строки и выполнялись необходимые команды из CMD-файла.
2. Viper - 25 Марта, 2011 - 11:32:19 - перейти к сообщению
awe007 ну всплывать оно точно не будет. и что значит фраза
awe007 пишет:
но в итоге файл выполняется в браузере на стороне клиента, а не на сервере.
вообще непонятно.
3. AdMeen - 25 Марта, 2011 - 11:55:17 - перейти к сообщению
awe007 пишет:
но в итоге файл выполняется в браузере на стороне клиента, а не на сервере.


печально это. Вы как определили?
4. awe007 - 25 Марта, 2011 - 12:01:39 - перейти к сообщению
в PHP файле была ошибка, стояло echo exec("test.cmd"), вот он и выводил содержимое файла в браузер.
Убрал echo, оставил только exec(), вроде начало кое-что работать на стороне сервера, но не всё. В частности,
php файл у меня такой
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. exec("test.cmd");
  3. echo "script complete!";
  4. ?>

в cmd файле у меня написано
shutdown -r -f -m \\192.168.2.197 -t 05
echo "end">log.txt
захожу на скрипт по ссылке url\stop.php, вижу в браузере надпись script complete, на сервере создается файл log.txt с текстом "END", но комп с айпишником 192.168.2.197 не завершает свою работу.
А если запускаю этот файл test.cmd прям с сервера через проводник, то все ок, комп гасится.
(Добавление)
Разобрался. Просто банально не хватало прав на выполнение операции shutdown Улыбка
Сделал запуск ярлыка от имени администратора и все заработало!

Извините за беспокойство!
5. Viper - 25 Марта, 2011 - 13:21:33 - перейти к сообщению
awe007 нет прав на выполнение shutdown у юзера от которого запущен Попаче
6. OrmaJever - 25 Марта, 2011 - 13:51:21 - перейти к сообщению
awe007 а вы пробовали в командной строке ввести команду test.cmd? Однако
Может start test.cmd ?
7. JustUserR - 25 Марта, 2011 - 21:07:30 - перейти к сообщению
awe007 пишет:
Разобрался. Просто банально не хватало прав на выполнение операции shutdown
Сделал запуск ярлыка от имени администратора и все заработало!
В качестве возможного варианта для осуществления решения предполагаемой задачи, заключающеся в проведении инициации внешнего разделенного исполняемого процесса, с обеспечением установки дифферентных параметров среды окружения и системых привелегий, а также модификации характеристки по осуществлению связи с группой ассоцированных родительских процессов, допустимо использование включаемых специаизированных фунциональных объектов для обеспечения взаимодействия с интерфейом Windows API
Возможность запуска внешнего BAT-файла и его правильная работоспособность может зависеть от различных параметров - среди них учитывается имя пользователь от имени которого запускается процесс и форма его инициализации - а также значение всего окружения которое включается в себя набор системных и пользовательских переменных и некоторые файловые пути
Если с точки зрения web-сервера запуск PHP-скрипта происходит идентично и работабщй по действенному перенаправлению CGI-скрипт интерпретатора имеет в точности такое же окружение - для его приведения к значению по умолчанию для консольного интерпретатора можно использоват опцию /I
Кроме того в системах windows и особенно в их серверных версиях имеется достаточно строгая система контроля доступа к ресурсам - в частности если пользователь от имени которого запускается процесс в явном имеет достаточные привелегии для осуществления некоторых действий - то при автоматическом запуске в качестве дочернего процесса он может и не иметь достаточных прав Некоторую информацию о программном переназначении текущего пользователя у процесса в windows - вы можете посмотреть здесь http://forum[dot]shelek[dot]ru/index.php[dot][dot][dot]topic,164[dot]0[dot]html и здесь http://forum.php.su/topic.php?fo...1&topic=4732
8. kyler - 10 Июня, 2011 - 20:15:22 - перейти к сообщению
У меня есть файл copy.cmd с такой командой:

CODE (htmlphp):
скопировать код в буфер обмена
  1. copy "C:\WebServer\Apache\htdocs\kyler66\upload\files\DB.FDB" "\\192.168.10.6\c$\wmpub\public\Upload\"


Дак вот, почему то он не хочет выполняться когда пишу в PHP скрипте - exec('copy.cmd')
Если, допустим, в этот файл записать что нибудь типа:

CODE (htmlphp):
скопировать код в буфер обмена
  1. shutdown.exe -s -f -t 100 -c "test test"


то все прекрасно работает, появляется окошко с сообщением и комп вырубается через 100 секунд. Почему тогда копирование не работает?
9. Данил_123 - 21 Августа, 2011 - 13:29:49 - перейти к сообщению
exec
CMD-файла.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. exec("1.sh");
  3. echo "complete";
  4. else
  5. echo "uncomplete";
  6. ?>


Я линуксойд.

 

Powered by ExBB FM 1.0 RC1