1

我很难将 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();据我了解,这是使用它的最准系统。

谢谢!

4

1 回答 1

2

当您告诉操作系统在没有显式路径的情况下运行特定的可执行文件时,它将使用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');
于 2012-11-16T08:12:22.860 回答