2012-11-16 46 views
1

我很難將來自Web服務器上可執行文件的輸出放入網頁中。我希望能得到一個簡單的「Hello World」。從.out文件打印輸出到PHP頁面

具體來說,我有一個非常基本的C程序輸出「Hello World」。我使用gcc編譯它,生成HelloWorld.out,我可以從命令行運行它。

然後我有一個基本的index.php文件,在其中我試圖使用中繼()輸出C程序的結果進入網頁。在PHP文件看起來像:

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

我已上載兩個PHP和.out文件在同一目錄我的服務器上。但是,index.php不會產生任何輸出。我在網上查了一下,有幾個地方我可能會得到這個錯誤......我的總目標是能夠將來自我的web服務器上的可執行程序的輸出嵌入到頁面中(不需要成爲HelloWorld .out;可能.out擴展名在服務器上不起作用?)。或者我可能會錯誤地使用passthru();據我所知,這是最準確的使用它。

謝謝!

+0

passthru沒有返回任何東西,所以你顯然在頁面上沒有輸出? 'void passthru(string $ command [,int&$ return_var])'http://php.net/manual/en/function.passthru.php或者我錯過了什麼? – Oleg

+0

@Oleg - 「執行外部程序並顯示原始輸出**」 –

+0

是的。大腦不能沒有咖啡...... – Oleg

回答

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'); 
+0

嗨,傑克,謝謝你的迴應!我仍然沒有得到任何輸出,但是...我嘗試過'passthru(./ HelloWorld.out');'''passthru('/ public_html/test/HelloWorld.out');','passthru( 。__DIR__ '/public_html/test/HelloWorld.out');'和'中繼(目錄名(__ FILE__) '/public_html/test/HelloWorld.out');',均未產生任何輸出.. – Nik

+0

沒關係我它工作。 - 我的第二個問題(愚蠢)只是我忘了將HelloWorld.out的權限更改爲可執行文件。你說的是正確的路徑,即使有正確的權限,它也不會與我的初始設置一起工作。目前'passthru('./ HelloWorld.out');'是在做伎倆。謝謝! – Nik

+0

忘記了它可能沒有x權限:)添加的可能性 –