作者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)