我有一个C代码,我必须通过PHP执行,
我使用过exec('./sys')
,sys
是我的可执行文件。
我还尝试了system()
,passthrough()
,shell_exec()
,但他们没有提供输出。
当我执行exec('who');
时,它会给出输出。
我该怎么做才能执行sys
?
答案 0 :(得分:1)
您引用的每个方法都将执行sys
文件,但您需要确保执行正确的路径。您的工作路径取决于实际执行PHP的脚本。例如,如果您通过apache或命令行执行代码,则工作目录可能不同。让我们假设这个文件结构:
+ src/
| + script.php
| + sys
我建议在script.php中使用PHP的__DIR__
魔术变量来始终引用当前文件的目录,然后从那里开始工作:
// script.php
exec(__DIR__ . "/sys");
检索输出可以通过几种不同的方式完成。如果您想将脚本的输出存储在变量中,我建议您根据手册使用exec
:
参数¶
<强>命令强> 将要执行的命令。
<强>输出强> 如果输出参数存在,那么指定的数组将填充命令的每一行输出。尾随空格(例如\ n)不包含在此数组中。请注意,如果数组已包含某些元素,则exec()将附加到数组的末尾。如果您不希望函数附加元素,请在将数组传递给exec()之前调用数组上的unset()。
<强> return_var 强> 如果return_var参数与输出参数一起出现,则执行命令的返回状态将写入此变量。
exec
将返回输出的第一行,但如果您需要更多输出,则需要通过引用传递变量:
// script.php
$output = array();
exec(__DIR__ . "/sys", $output);
然后 $output
将包含该命令的每行输出数组。但是,如果要运行sys
脚本并直接通过输出,请使用passthru(__DIR__ . "/sys");
例如,如果要在命令行上执行需要输入的命令,passthru
将是最好的选择。