作者saponevol23 (saponevol23)
看板PHP
標題[請益] 利用system()呼叫g++編譯
時間Mon Sep 5 13:28:45 2011
我寫了一個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)
1F:→ bibo9901:\改成\\ 09/05 14:53
2F:→ saponevol23:都改成\\了 可是結果還是一樣@@ 09/05 15:15
3F:推 cceHunteR:權限問題? 09/05 15:28
4F:→ saponevol23:我有找到php.ini了 要改哪邊啊? 09/05 16:15
5F:→ bibo9901:不用呼叫cmd.exe, 直接system("$compiler ....")就好 09/05 20:35
6F:→ ileadu:system()改用passthru() 09/05 20:56
7F:→ qwertmn:直接改資料夾權限 chmod 777 這樣試試看? 09/05 22:37
8F:→ saponevol23:我照bibo大的意見直接呼叫g++ 檔案終於出現了!! 09/05 22:49
9F:→ saponevol23:也感謝樓上兩位的意見 09/05 22:50
10F:→ saponevol23:那另外一個問題有人知道問題出在哪嗎 09/05 22:55
不好意思 我又有新問題了="=
剛剛故意把cpp檔寫錯
想在網頁上看到php呼叫g++編譯後傳回來的錯誤訊息
但網頁上甚麼文字都沒有出現
這跟權限有關係嗎 另外我是用Windows
※ 編輯: saponevol23 來自: 114.39.154.128 (09/05 23:25)
11F:→ bibo9901:可能你g++送回來的訊息, 最後一行是空行, 而system()只抓 09/07 11:31
12F:→ bibo9901:最後一行 09/07 11:31
但我嘗試過用passthru()來呼叫
輸入passthru(dir);的時候有顯示資料夾內容
改成編譯的路徑卻又沒有東西了
我的safe_mode有關掉 還是有哪些地方需要調整嗎?
※ 編輯: saponevol23 來自: 114.39.168.203 (09/07 14:37)