我有一个程序,我可以从windows7的命令行执行,并传递一些参数。该程序进行一些计算,并写入文本文件,然后关闭。没有输出到命令行。
我需要做的是通过一个php网页执行这个程序。
我一直在阅读PHP手册,但我似乎仍然无法使程序正常运行。
这个代码段执行EXE。显然,我的问题是让参数被EXE看到。
<?php
$du = 'Unity.exe';
echo exec($du);
echo $command;
?>
在这里,我试图传递参数,EXE从未运行,参数丢失或其他。
<?php
//Date (no year), Time(am | pm), Name, Duration, Experiment type.
//05/05 10:00,.5,User
$du = 'C:'Apache24'old'Unity.exe';
$command = $du . ' 05/06, 1:00 AM, .5, Joh';
echo exec($command);
echo $command;
?>
我不知道该怎么办。exec(命令,return_var美元);总是返回为1,并且不向文本文件中写入任何文本。
更新:我应该如何通过php传递参数给exe ?
这条线:$command = $du。05/06, 1:00 AM, 1:05, john ';
如果您使用popen()
,它可能类似于fopen()
,但您使用命令行程序。因此,您可以使用fread()
或fgets()
读取输出。
你得到的1是退出代码或主函数的返回值,你可能从c/c++中知道。在Linux中,如果我没记错的话,你可以用echo $#
来读取它,在Windows中,它是echo %errorlevel%
。
下面是我运行的测试列表
test.php
<?php
echo exec('echo "abc "');
echo "<br>";
echo exec('copy "test.php" "test2.php"');
echo "<br>";
echo exec('test.bat "hello this is a test"');
echo "<br>";
echo exec('test2.bat hello this is a test');
?>
test.bat
echo %1
test2.bat
@echo off
echo %1 - %2 - %3 - %4 - %5
"abc "
1 file(s) copied.
"hello this is a test"
hello - this - is - a - test
所以,尝试使用与PHP文件在同一文件夹中的bat文件来绕过参数。如,
test.php
echo exec('test.bat 05/06 1:00AM .5 ');
test.bat
Unity.exe %1 %2 %3 %4
(请注意,在大多数情况下,空格是用来分隔参数的)