如何通过提示终端通过PHP执行C代码

时间:2015-11-13 14:52:09

标签: php

我有一个C代码,我必须通过PHP执行, 我使用过exec('./sys')sys是我的可执行文件。 我还尝试了system()passthrough()shell_exec(),但他们没有提供输出。

当我执行exec('who');时,它会给出输出。

我该怎么做才能执行sys

1 个答案:

答案 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将是最好的选择。