我很难将我的网络服务器上的可执行文件的输出放入网页中。我希望得到一个简单的“Hello World”。
具体来说,我有一个非常基本的C程序打印“Hello World”。我使用gcc编译它,它生成HelloWorld.out,我可以从命令行运行。
然后我有一个基本的index.php文件,我试图使用passthru()将C程序的结果输出到网页中。 .php文件如下所示:
<?php passthru('HelloWorld.out'); ?>
我已将php和.out文件上传到我服务器上的同一目录。但是,index.php不会产生任何输出。我在网上浏览过,有几个地方我可能会弄错...我的总体目标是能够将我的网络服务器上的可执行程序的输出嵌入到页面中(不需要是HelloWorld .out;可能.out扩展名在服务器上不起作用?)。或者我可能错误地使用passthru();据我所知,这是最准确的使用它。
谢谢!
答案 0 :(得分:2)
当您告诉操作系统在没有显式路径的情况下运行特定可执行文件时,它将使用PATH
环境变量(冒号分隔的路径集)来查找它。
典型路径为/bin
,/usr/bin/
等
如果在这些路径中找不到可执行文件,则会抛出错误并放弃。要解决此问题,您有以下选择:
指定可执行文件的绝对路径(即/path/to/HelloWorld.out
)
指定相对于当前目录的路径(即./HelloWorld.out
)
使用PHP创建绝对路径:
passthru(__DIR__ . '/HelloWorld.out');
或者:
passthru(dirname(__FILE__) . '/HelloWorld.out');
最后,您要执行的文件必须是可执行文件,使用chmod
更改权限或将文件路径传递给sh
。
passthru('/bin/sh ' . dirname(__FILE__) . '/HellWorld.out');