我正在尝试在服务器上编译一个c ++文件。我在运行WampServer2.0(php 5.3.0)的系统上安装了Windows 7 64位以及mingw32 c / c ++编译器。我已经将env变量设置为相对路径(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。
答案 0 :(得分:4)
反斜杠在PHP字符串文字中有特殊含义,因此您需要将其转义:
$string = system("g++ -o C:\\wamp\\www\\Dest_folder\\file.exe C:\\wamp\www\\Dest_folder\\file.cpp", $retval);
答案 1 :(得分:0)
如果修复反斜杠无法解决您的问题,请在php.ini文件中找到以下行:disable_functions。如果您看到“系统”已写入,请将其删除。
问候