PHP不在Windows中执行.bat文件

时间:2013-12-05 13:31:20

标签: php windows batch-file exec batch-processing

我正在尝试在Windows Server 2008上使用PHP执行批处理文件。

该文件名为NEWDNS.bat,其目的是将新条目写入存储在c:\windows\system32\dns中的DNS区域文件中。区域文件名为motlocal.co.uk

以下是newdns.bat

的内容
@echo off
cd windows\system32\dns\
dnscmd dsvr012345 /recordadd motlocal.co.uk mynewsubdomain A 88.208.200.221
dnscmd dsvr012345 /ZoneReload motlocal.co.uk

newdns.bat存储在服务器上与调用它的PHP页面相同的目录中: -

以下是调用newdns.bat的页面内容(php页面名为dnscreator.php)


<?php
if(isset($_POST['submit']))
{
    echo exec("cmd.exe /c newdns.bat");
    echo "Done!";
} else {
?>
    <form action="" method="post">
    <input type="submit" name="submit" value="DO IT!">
    </form>
<?php
}
?>

当我从Windows文件夹中双击批处理文件时 - 它会运行并完美地执行其命令并在dns区域文件中创建新的子域。

然而 - 无论我如何尝试(我现在已经使用了2天)它在运行dnscreator.php时不会执行。

表单执行并显示消息“完成!”但是newdns.bat中的命令还没有执行。我知道批处理文件可以工作,因为正如我所说的 - 我可以从一个Windows文件夹(双击)运行它,它可以做它应该做的事情。

PHP安全模式已关闭,以防你想知道我已经尝试将批处理文件移动到c:\ windows \ system32,这也不起作用。

非常感谢您提供的任何帮助/建议/指示 - 我在我的智慧结束!非常感谢。

2 个答案:

答案 0 :(得分:0)

如果您的PHP页面与批处理文件位于同一目录中,那么下面将这样做:

exec("batchname.bat");

参考;

个人经历

答案 1 :(得分:0)

1 - cd windows\system32\dns\ CD来自哪里?它是调用批处理文件的进程的当前目录的相对路径

2 - 您可以运行批处理文件,但是,帐户(运行Web服务器的位置)可以执行此操作吗?

3 - 您如何知道批处理文件是否正在运行?尝试从批处理文件(echo inside batch > "%temp%\batchphp.log"

中留下日志