Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
打印PHP页面中.out文件的输出_Php_C_Executable - Fatal编程技术网

打印PHP页面中.out文件的输出

打印PHP页面中.out文件的输出,php,c,executable,Php,C,Executable,我很难将web服务器上可执行文件的输出放入网页。我希望能有一个简单的“你好世界” 具体来说,我有一个非常基本的C程序,可以打印“Hello World”。我使用gcc编译了它,它生成HelloWorld.out,我可以从命令行运行它 然后我有一个basic index.php文件,在其中我试图使用passthru()将C程序的结果输出到web页面中。.php文件如下所示: 我已经将php和.out文件上传到了服务器上的同一个目录中。但是,index.php不生成任何输出。我在网上查了一下,有几

我很难将web服务器上可执行文件的输出放入网页。我希望能有一个简单的“你好世界”

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

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

我已经将php和.out文件上传到了服务器上的同一个目录中。但是,index.php不生成任何输出。我在网上查了一下,有几个地方我可能弄错了。。。我的总体目标是能够将web服务器上可执行程序的输出嵌入到页面中(不需要是HelloWorld.out;可能是.out扩展在服务器上不起作用?)。或者我可能错误地使用了passthru();据我所知,这是最赤裸裸地使用它


谢谢

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

典型的路径是
/bin
/usr/bin/
,等等

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

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

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

  • 使用PHP创建绝对路径:

    passthru(uuu DIR_uuu.'/HelloWorld.out')

  • 或:

    最后,要执行的文件必须是可执行文件,可以使用
    chmod
    更改权限,也可以将文件路径传递到
    sh

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

    是否
    passthru
    不返回任何内容,因此页面上显然没有输出
    void passthru(字符串$command[,int&$return\u var])
    或者我缺少什么?@Oleg-“执行外部程序并显示原始输出”True。没有咖啡大脑就不能工作…嗨,杰克,谢谢你的回复!我仍然没有得到任何输出,但是。。。我尝试了
    passthru(./HelloWorld.out')
    passthru('/public_html/test/HelloWorld.out')
    passthru(uuu DIR_uuu.'/public_html/test/HelloWorld.out')
    passthru(dirname(_文件).'/public_html/test/HelloWorld.out'),没有一个正在生成任何输出..尽管我让它工作了。-我的第二个问题(愚蠢的)就是我忘了将HelloWorld.out的权限更改为可执行的。。。嗯。不过,您对路径的看法是正确的,即使有正确的权限,我的初始设置也无法使用该路径。当前
    passthru('./HelloWorld.out')正在发挥作用。谢谢忘记了它可能没有添加的x权限:)的可能性
    
    passthru('/bin/sh ' . dirname(__FILE__) . '/HellWorld.out');