5

我尝试在 PHP 中使用 exec 命令执行批处理文件。我只是像这样使用它:

$filename = 'test.bat';
exec($filename);

但没有得到任何输出。我用另一个命令尝试了这个功能,它工作正常。您的建议将不胜感激。谢谢

4

6 回答 6

7

主要问题是pathpermission。我已经得到我的批处理文件来执行。

这是我的解决方案:

  1. 我从 php 文件所在的同一文件夹运行我的批处理文件。

    exec("mybatch.bat");

  2. 我确保 Apache 服务有足够的权限来运行批处理文件。只是为了测试我使用 Apache 的管理员帐户登录。

于 2013-09-30T07:18:20.937 回答
2

Windows服务器上,请注意引号。这对我有用:

system('cmd.exe /c C:\myfolder\_batches\run_this_batch.bat');
于 2014-10-28T18:40:33.323 回答
1
system("cmd /c C:[path to file]");

正如“RichieHindle”在类似话题中所说。

或尝试

exec("cmd.exe /c test.bat") ?
于 2013-09-30T07:15:16.080 回答
1

如果您需要执行命令并将命令中的所有数据直接传回而不受任何干扰,请使用 passthru() 函数。

http://md1.php.net/manual/en/function.passthru.php

于 2013-09-30T07:15:56.030 回答
1

我所做的是以下内容:

  1. 创建了一个 PHP 文件,其中包含:

    $gotIt = array();
    $file = "getMyIP.bat";
    exec( $file, $gotIt );
    echo implode("<br>",$gotIt);
    
  2. 在同一文件夹中创建了一个批处理文件

    @ECHO off
    ipconfig
    
  3. 运行它并等待防火墙跳过整个动作。

然后我得到如下输出:

Windows IP Configuration


PPP adapter 3 USB Modem:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : ***.***.202.81
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : ***.***.202.81

只有 *** 所在的数字

于 2014-12-03T00:33:00.677 回答
0

正如exec doc中解释的那样:

echo exec($filename);

或者

exec($filename, $output);
echo $output;
于 2013-09-30T07:26:14.007 回答