我尝试在 PHP 中使用 exec 命令执行批处理文件。我只是像这样使用它:
$filename = 'test.bat';
exec($filename);
但没有得到任何输出。我用另一个命令尝试了这个功能,它工作正常。您的建议将不胜感激。谢谢
我尝试在 PHP 中使用 exec 命令执行批处理文件。我只是像这样使用它:
$filename = 'test.bat';
exec($filename);
但没有得到任何输出。我用另一个命令尝试了这个功能,它工作正常。您的建议将不胜感激。谢谢
主要问题是path
和permission
。我已经得到我的批处理文件来执行。
这是我的解决方案:
我从 php 文件所在的同一文件夹运行我的批处理文件。
exec("mybatch.bat");
我确保 Apache 服务有足够的权限来运行批处理文件。只是为了测试我使用 Apache 的管理员帐户登录。
在Windows服务器上,请注意引号。这对我有用:
system('cmd.exe /c C:\myfolder\_batches\run_this_batch.bat');
system("cmd /c C:[path to file]");
正如“RichieHindle”在类似话题中所说。
或尝试
exec("cmd.exe /c test.bat") ?
如果您需要执行命令并将命令中的所有数据直接传回而不受任何干扰,请使用 passthru() 函数。
我所做的是以下内容:
创建了一个 PHP 文件,其中包含:
$gotIt = array();
$file = "getMyIP.bat";
exec( $file, $gotIt );
echo implode("<br>",$gotIt);
在同一文件夹中创建了一个批处理文件
@ECHO off
ipconfig
运行它并等待防火墙跳过整个动作。
然后我得到如下输出:
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
只有 *** 所在的数字