2013-12-10 127 views
0

我想在linux服務器上編譯一個c/C++代碼。我正在使用PHP。假設我正在接收用戶的源代碼,然後使用它創建臨時文件,然後使用gcc,我只是試圖製作一個簡單的可執行文件。要做所有這些我正在做的下面的代碼,但它沒有產生任何輸出。那麼如何在linux服務器上運行一個linux命令,我的意思是下面的代碼就ok了。如果是,那麼爲什麼它不產生任何名爲可執行的「最新」如何從php運行linux命令

$received_code = $_POST['myc']; 


     $fp = fopen("myfile", "w") or die("Couldn't open file for writing!"); 
     fwrite($fp, $received_code) or die("Couldn't write values to file! ...Compilation Error"); 
     fclose($fp); 

       shell_exec("gcc -o latest myfile"); 
+0

什麼'$結果=了shell_exec(「GCC -o最新MYFILE」)後,認爲執行其方案; var_dump($ result);'寫? –

回答

1

我認爲一個好的猜測是gcc是不是在你的PHP路徑,但剛剛從您的通話shell_exec可能會告訴你輸出即:

$output = shell_exec('gcc -o latest myfile'); 
echo "<pre>$output</pre>"; 

嘗試使用與gcc

1

絕對路徑至少,重命名MYFILE到myfile.c文件,或GCC將無法識別它作爲C源代碼。

您是否檢查myfile是否被寫入?如果不是,這可能是一個權限問題。

順便說一句,有惡意用戶的樂趣,如果你編譯它:-)

+0

+1爲安全問題 – Lucio