2014-07-04 75 views
0

我必須創建一個輸出文件(帶有編譯錯誤)到一個文件中。 我最初的做法是這樣的:在單引號字符串中連接PHP會話

$output = system("C:\cygwin\bin\bash.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:\cygwin\bin\bash.exe --login -c'.$command); 

編輯:我沒有使用session_start()和會話的用戶名具有值

+0

也許第二個命令中的-c'後的missin空間? – MightyPork

+0

@MightyPork nope –

+0

你檢查過'$ _SESSION'返回的值嗎? – Cristian

回答

0

首先的 - 你應該放置在session_start();代碼的頂部啓用PHP會議上這樣PHP可以初始化會話cookie。

爲確保會話已設置且值不爲空,請使用isset($_SESSION['username'])和/或!empty($_SESSION['username'])

我推薦使用var_dump($_SESSION);來查看是否設置了該值。

+0

我在那之前添加了session_start(),對不起,我還回顯了會話,它確實有一個值 –

+0

正如我注意到的,沒有在第一個例子中,它在第一個例子中起作用撇號。 – emii

+0

aaaah ...它已經將雙引號改爲單引號(或者你稱之爲撇號) –

0

終於搞定了。以下是我如何做到的:

$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:\cygwin\bin\bash.exe --login -c '".$command); 

所以我還是在那裏加了一個撇號。否則,它不起作用