2017-03-09 54 views
1

我有一個程序在命令行中輸出數據。如何在PHP網頁上編譯c程序可執行輸出顯示

MyProgram -D 「02/02016/12:00-03/02/2016/12:00」

我只是想顯示在Linux編譯的C程序的網頁結果。除文件(-f文件名)和日期(-d「日期時間或日期時間範圍」)外,還有其他標誌。還有其他shell命令標誌可用於程序,但它們不會影響文本本身的顯示格式。

這會導致在命令行中輸出格式類似於以下內容的輸出。這裏的實際結果沒有多大意義。它在後端顯示類似於以下格式的列表或記錄。

我試圖將結果顯示在PHP前端網頁上。

------------------------------------------------------------------------------------ 
<record_id_number_here> <date_stamp_tex><someflag_value><event_type_number> 
<Some event status text information> 
----------------------------------------------------------------------------------- 

事情我已經試過見下文test.php的代碼。我正在尋找一種工作方式。

test.php的

<?php 
    echo "ran as user:".exec("whoami"); 
    echo "test1<br />"; 
    echo exec("MyProgram -f TestLogBinaryFileDate"); 
    echo "test2<br />"; 
    echo system("MyProgram -f TestLogBinaryFileDate"); 
    echo "test3<br />"; 
    echo popen("MyProgram -f TestLogBinaryFileDate"); 
    echo "test4<br />"; 
    echo passthru("MyProgram -f TestLogBinaryFileDate"); 
    echo "tests calls complete"; 
?> 

每個試圖獲取每個這些函數的結果並沒有持續,也沒有顯示應該是任何記錄數據文本停止PHP。

MyProgram我甚至曾嘗試將Apache用戶設置爲文件編譯命令行應用程序的所有者,甚至將應用程序移動到網頁test.php所在的網站根目錄中。

環境的Linux(Fedora的22或Red Hat Linux的未來),MariaDB的,PHP 5.6.8

我毫不懷疑我會用什麼樣的工作,沒有工作的詳細信息來更新這個。

我已經看到有關safemode目錄的帖子,因爲safemode PHP在5.4中被拒絕並且在5.3中被棄用,所以safemode不應該成爲問題。

+0

應當注意我已經能夠使用的命令行shell命令PHP和能夠使這項工作在命令行,但當我嘗試將其放入test.php時,它會中斷。 – Dcross2017

+0

我檢查了「disable_functions」的PHP.ini。文件中沒有行包含該行。我發現在cyberciti.biz/faq/linux-unix-apache-lighttpd-phpini-disable-functions/ – Dcross2017

回答

1

http://php.net/manual/en/function.shell-exec.php

了shell_exec - 通過shell執行命令,並返回完整輸出作爲一個字符串

+0

試過,也沒有運氣。 $ test = exec_shell(「MyProgram -f TestLogBinaryFileDate」); echo $ test;不起作用,我也嘗試過pre標籤,沒有運氣仍然空白 – Dcross2017

+0

@ Dcross2017 - 在你的php.ini中禁用'shell_exec'?檢查'disable_functions並且檢查PHP是否沒有以安全模式運行 – Gravy

+0

記住在重新啓動apache/nginx/php-fpm或者其他任何東西之後記得更改 – Gravy

相關問題