我必须在一个文件中创建一个输出文件(包含编译错误)。我最初的方法是这样的:
$output = system("C:cygwinbinbash.exe --login -c '/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/chorva.cpp -o /cygdrive/c/Server/www/Codice/chorva.exe >> compile.log 2>&1'");
这个代码工作了。
但是当我添加会话时,我不能使它正确。我做错了什么?非常感谢所有的帮助!
$command = "/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/LOGS/".$_SESSION['username']."/chorva.cpp -o /cygdrive/c/Server/www/Codice/LOGS/".$_SESSION['username']."/chorva.exe >> compile.log 2>&1";
$output = system('C:cygwinbinbash.exe --login -c'.$command);
编辑:我确实使用了session_start()
,会话用户名确实有一个值
首先,您应该通过在代码顶部放置session_start();
来启用PHP会话,以便PHP可以初始化会话cookie。
使用isset($_SESSION['username'])
和/或!empty($_SESSION['username'])
确保会话设置且值不为空。
我建议使用var_dump($_SESSION);
查看是否实际设置了该值。
终于成功了。我是这样做的:
$un = $_SESSION['username'];
$command = "/cygdrive/c/cygwin/bin/g++.exe /cygdrive/c/Server/www/Codice/LOGS/".$un."/chorva.cpp -o /cygdrive/c/Server/www/Codice/LOGS/".$un."/chorva.exe >> LOGS/".$un."/compile.log 2>&1";
$output = system("C:cygwinbinbash.exe --login -c '".$command);
所以我还是加了一个撇号。否则,它将不起作用