2015-10-26 35 views
0

編譯GCC,我從PHP和嘗試這個功能:如何從PHP

exec("gcc testC.c -o runner.out 2>&1",$output,$status); 

,但是當我打印$輸出我得到這個錯誤:(:

gcc: error trying to exec 'cc1': execvp: No such file or directory\n 

如果我運行

exec("/usr/bin/gcc testing/pruebaC.c -o testing/frommm.out 2>&1",$output,$status); 

我明白了

collect2: fatal error: cannot find 'ld'\n 

我的用戶:

groups vagrant 
vagrant : vagrant root adm cdrom sudo dip www-data plugdev lpadmin sambashare 

我的gcc目錄

/usr/bin$ ls -l gcc 
lrwxrwxrwx 1 root vagrant 7 Apr 7 2014 gcc -> gcc-4.8 

如果我從終端運行的所有工作,我可以編譯和執行,但是從PHP我不能:(

+1

確保PHP的'$ PATH'環境變量設置正確。 – zneak

+0

我該如何檢查? –

+0

'echo $ _ENV [「PATH」]' – zneak

回答

0

我不知道評論中發生了什麼,但我已經找到了問題的根源,我正在回答這個問題只是爲了澄清任何未來的讀者。

@zneak是對的。如果你嘗試和echo $_ENV["PATH"]並沒有收到任何迴應,這意味着PHP正在執行gcc和任何其他可執行文件,而無需在PATH變量中查找它們。因此,它有時找不到其中的任何一個。 @Marco解釋爲在bash中回顯PATH變量,並執行echo $PATH。但是,這兩個變量是分開的,並且PHP PATH通常是未設置的,而bash PATH是。

爲了解決這個問題,您必須在其環境變量中爲PHP定義PATH。如果您不確定要放什麼,請參閱bash中定義的PATH變量。例如,我目前的Laravel項目有在底部的線條

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

的是.env文件,現在只是執行gcc(不給完整路徑/usr/bin/gcc)正常工作。