Сервер не отвечает при попытке выполнить файл .bat из сценария PHP - PullRequest
1 голос
/ 09 июля 2011

У меня есть файл .bat, расположенный в той же папке, что и мой php-файл с именем start.bat. Я хочу, чтобы файл .bat выполнялся, когда я нажимал кнопку отправки.

Мой файл php выглядит так:

<?php
if(isset($_POST['submit']))
{
echo exec('start.bat');
echo "Done!";
} else {
// display the form
?>
<form action="index.php" method="post">
<input type="submit" name="submit" value="Start Server">
</form>
<?php
}
?>

Когда я нажимаю кнопку, веб-страница переходит в бесконечный цикл «Ожидание сервера ...» и не запускает пакетный файл.

Есть ли что-то подобноеразрешения, которые мне нужно установить, чтобы запускался пакетный файл, или я делаю что-то неправильное в коде?

Спасибо за быструю помощь, поскольку мне нужно решить эту проблему сегодня!

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

Во-первых, и в качестве хорошей практики, вы всегда должны использовать абсолютные пути, а не относительные пути.Система может искать start.bat в другом месте.Вы никогда не узнаете наверняка, где у любого автоматического вызова есть относительная точка.Я мог бы рассказать вам несколько забавных хранилищ стертых путей system32.

Во-вторых, exec () означает исполняемый файл.В зависимости от настроек вашей системы, bat-файл может не распознаваться как исполняемый файл.Расширение .bat использовалось во времена DOS для пакетных файлов.Системы Windows начиная с Windows NT используют .cmd.

На веб-сервере Windows откройте командную строку и введите

set PATHEXT

Там вы должны увидеть .BAT.Если это установлено, то .bat должен запускаться с exec ().

Если вы не видите .bat и в качестве еще одной хорошей практики вы можете сначала запустить хост для файла bat, который является cmd.

exec('cmd /c c:\www\start.bat');

Вы также можете попробовать system () вместо exec ().

0 голосов
/ 09 июля 2011

Удалите echo перед exec, и оно должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...