[請益] 利用system()呼叫g++編譯

看板PHP作者 (saponevol23)時間14年前 (2011/09/05 13:28), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
我寫了一個cmd.php內容如下 <?php $compiler="C:\Dev-Cpp\bin\g++.exe"; $code="C:\xampp\htdocs\project\tmp\a002.cpp"; $target="C:\xampp\htdocs\project\tmp\a.exe"; $command="C:\WINDOWS\system32\cmd.exe $compiler $code -o $target"; system($command); ?> 在cmd.exe裡面輸入過 "C:\Dev-Cpp\bin\g++.exe C:\xampp\htdocs\project\tmp\a002.cpp -o C:\xampp\htdocs\project\tmp\a.exe" 有編譯成功 檔案也有出現 但用PHP呼叫就無法成功 只顯示 Microsoft Windows XP [版本 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\xampp\htdocs\Project> 的字樣 a.exe也沒有出現在資料夾裡 不知道是哪邊出了問題 另外我測試了用php system()去呼叫預先編譯好的exe檔 <?php system('C:\xampp\htdocs\project\tmp\a.exe 5 10'); ?> 這程式的功能是輸出兩個input的差值 但php網頁上沒有回傳任何結果 C++的程式長這樣 #include<iostream> using namespace std; int main() { long long int a,b,c; while(cin >> a, cin >> b) { c=a-b; if(c<0) c=-c; cout<< c<<endl; }} 問題不知道出在哪邊 有請高手解答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.154.128 ※ 編輯: saponevol23 來自: 114.39.154.128 (09/05 13:57)

09/05 14:53, , 1F
\改成\\
09/05 14:53, 1F

09/05 15:15, , 2F
都改成\\了 可是結果還是一樣@@
09/05 15:15, 2F

09/05 15:28, , 3F
權限問題?
09/05 15:28, 3F

09/05 16:15, , 4F
我有找到php.ini了 要改哪邊啊?
09/05 16:15, 4F

09/05 20:35, , 5F
不用呼叫cmd.exe, 直接system("$compiler ....")就好
09/05 20:35, 5F

09/05 20:56, , 6F
system()改用passthru()
09/05 20:56, 6F

09/05 22:37, , 7F
直接改資料夾權限 chmod 777 這樣試試看?
09/05 22:37, 7F

09/05 22:49, , 8F
我照bibo大的意見直接呼叫g++ 檔案終於出現了!!
09/05 22:49, 8F

09/05 22:50, , 9F
也感謝樓上兩位的意見
09/05 22:50, 9F

09/05 22:55, , 10F
那另外一個問題有人知道問題出在哪嗎
09/05 22:55, 10F
不好意思 我又有新問題了="= 剛剛故意把cpp檔寫錯 想在網頁上看到php呼叫g++編譯後傳回來的錯誤訊息 但網頁上甚麼文字都沒有出現 這跟權限有關係嗎 另外我是用Windows ※ 編輯: saponevol23 來自: 114.39.154.128 (09/05 23:25)

09/07 11:31, , 11F
可能你g++送回來的訊息, 最後一行是空行, 而system()只抓
09/07 11:31, 11F

09/07 11:31, , 12F
最後一行
09/07 11:31, 12F
但我嘗試過用passthru()來呼叫 輸入passthru(dir);的時候有顯示資料夾內容 改成編譯的路徑卻又沒有東西了 我的safe_mode有關掉 還是有哪些地方需要調整嗎? ※ 編輯: saponevol23 來自: 114.39.168.203 (09/07 14:37)
文章代碼(AID): #1EP5uGx_ (PHP)
文章代碼(AID): #1EP5uGx_ (PHP)