【问题标题】:Print output from .out file in a PHP page在 PHP 页面中打印 .out 文件的输出
【发布时间】:2012-11-16 08:07:51
【问题描述】:

我很难将 Web 服务器上的可执行文件的输出放入网页中。我希望得到一个简单的“Hello World”。

具体来说,我有一个打印“Hello World”的非常基本的 C 程序。我使用 gcc 编译它,生成 HelloWorld.out,我可以从命令行运行它。

然后我有一个基本的 index.php 文件,我在其中尝试使用 passthru() 将 C 程序的结果输出到网页中。 .php 文件如下所示:

<?php passthru('HelloWorld.out'); ?>

我已将 php 和 .out 文件上传到服务器上的同一目录。但是, index.php 不会产生任何输出。我在网上环顾四周,有几个地方我可能弄错了......我的总体目标是能够将我的网络服务器上的可执行程序的输出嵌入到页面中(不需要是 HelloWorld .out;可能 .out 扩展名在服务器上不起作用?)。或者我可能错误地使用了 passthru();据我了解,这是使用它的最准系统。

谢谢!

【问题讨论】:

  • passthru 不返回任何内容,所以您显然在页面上没有输出? void passthru ( string $command [, int &$return_var ] ) php.net/manual/en/function.passthru.php 还是我错过了什么?
  • @Oleg -" 执行外部程序并显示原始输出"
  • 是的。没有咖啡,大脑就无法运作......

标签: php c executable


【解决方案1】:

当您告诉操作系统在没有明确路径的情况下运行特定的可执行文件时,它将使用PATH 环境变量(以冒号分隔的一组路径)来查找它。

典型路径为/bin、/usr/bin/ 等。

如果在这些路径中找不到可执行文件,它将抛出错误并放弃。要解决此问题,您有以下选择:

  1. 指定可执行文件的绝对路径(即/path/to/HelloWorld.out)

  2. 指定相对于当前目录的路径(即./HelloWorld.out)

  3. 使用PHP创建绝对路径:

    passthru(__DIR__ . '/HelloWorld.out');

或者:

    passthru(dirname(__FILE__) . '/HelloWorld.out');

最后,您希望执行的文件必须是可执行的,可以使用chmod 更改权限或将文件路径传递给sh。

passthru('/bin/sh ' . dirname(__FILE__) . '/HellWorld.out');

【讨论】:

  • 嗨,杰克,感谢您的回复!但是,我仍然没有得到任何输出……我已经尝试过passthru(./HelloWorld.out');、passthru('/public_html/test/HelloWorld.out');、passthru(__DIR__ . '/public_html/test/HelloWorld.out'); 和passthru(dirname(__FILE__) . '/public_html/test/HelloWorld.out');,没有一个产生任何输出..
  • 没关系,我让它工作了。 - 我的第二个问题(愚蠢地)只是我忘记将 HelloWorld.out 的权限更改为可执行......呃。不过,您对路径的看法是正确的,即使具有正确的权限,它也不适用于我的初始设置。目前passthru('./HelloWorld.out'); 正在发挥作用。谢谢!
  • 忘记了它可能没有添加x权限的可能性:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多