1

我正在尝试在服务器上编译一个 c++ 文件。我在运行 WampServer2.0(php 5.3.0)的系统上安装了 Windows 7 64 位和 mingw32 c/c++ 编译器。我已经将环境变量设置为相对路径(c:\MinGW\bin)。以下代码不会在 Dest_folder 中生成任何可执行文件,但是当从 cmd(命令提示符)执行时该命令运行良好并生成可执行文件

<?php
$string = system("g++ -o C:\\wamp\\www\\Dest_folder\\file.exe C:\\wamp\\www\\Dest_folder\\file.cpp", $retval);
echo $retval;
echo $string;
?> 

$string 变量应该在成功时返回命令输出的最后一行,在失败时返回 FALSE(在这种情况下不返回任何内容)并且 $retval 变量返回 1。我做错了什么吗?我还注意到,每个成功的 system() 调用(除了 g++ 编译之外的所有其他调用)都会产生 0 作为 $retval。

4

2 回答 2

3

反斜杠在 PHP 字符串文字中具有特殊含义,因此您需要将其转义:

$string = system("g++ -o C:\\wamp\\www\\Dest_folder\\file.exe C:\\wamp\www\\Dest_folder\\file.cpp", $retval);
于 2012-03-25T23:47:19.143 回答
0

如果修复反斜杠没有解决您的问题,请在您的 php.ini 文件中检查以下行: disable_functions 。如果您看到写有“系统”,请将其删除。

问候

于 2012-03-26T00:01:09.590 回答