尝试从PHP执行C程序并输出到web浏览器

尝试从PHP执行C程序并输出到web浏览器,php,linux,Php,Linux,我有一个已经编译成可执行文件的C程序。我可以从我的控制台运行这个程序。我试图通过我的web浏览器获得这个程序的输出,所以我在PHP中使用exec命令。当我从命令行执行PHP脚本时,它工作得很好,但是当我通过浏览器调用它时,我没有得到任何输入。这是我的PHP程序 <?php echo exec('/var/www/html/./readcard'); ?> readcard程序有777个权限。我猜问题与权限有关?您可能只是回显脚本的返回码,返回码为零。您

我有一个已经编译成可执行文件的C程序。我可以从我的控制台运行这个程序。我试图通过我的web浏览器获得这个程序的输出,所以我在PHP中使用exec命令。当我从命令行执行PHP脚本时,它工作得很好,但是当我通过浏览器调用它时,我没有得到任何输入。这是我的PHP程序

    <?php
    echo  exec('/var/www/html/./readcard');
    ?>


readcard程序有777个权限。我猜问题与权限有关?

您可能只是回显脚本的返回码,返回码为零。您可以将输出重定向到一个文件,然后从php提供该文件,或者通过管道将输出流直接返回到php代码

试一试


您没有捕获输出。的第二个参数由一个数组组成,输出行将被放置到该数组中

<?php
$output=array();
$rv=0;
exec('/var/www/html/./readcard',$output,$rv);

if($rv!=0)
{
  die("readcard failed, got a return value of $rv\n");
}

foreach($output as $line)
{
  echo("<p>$line</p>\n");
}
?>


你好,杰克,谢谢你。还是一样。但是,当我从命令行执行时,它输出良好。我想我已经找到了问题所在,我的C程序正在调用许多共享对象,操作系统正在阻止这一点。正在尝试更改这些对象的权限。这可能是路径问题-可能与权限无关,但通过apache运行的命令可能无法看到共享对象的可能副本
<?php
$output=array();
$rv=0;
exec('/var/www/html/./readcard',$output,$rv);

if($rv!=0)
{
  die("readcard failed, got a return value of $rv\n");
}

foreach($output as $line)
{
  echo("<p>$line</p>\n");
}
?>