하자 우선 해제 지구에 약간이를 가져온다. 다음 라인 :
exec("C:\\xampp\\upload.exe backup /command \"option confirm off\" \"put C:\\big boy\\Documents\\dev notes\\\" \"exit\"");
당신은 명령의 실제 문자열에 주로 관심, 현실을 rewiew하자
C:\xampp\upload.exe backup /command "option confirm off" ⤦
⤥"put C:\big boy\Documents\dev notes\" "exit"
, 이것은 유효하지 않은 지금 당신에게 분명히 볼 수 있어야로 명령 쉘에서. /command
스위치의 값을 전달해야하는 형식 인 upload.exe
의 설명서를 참조하십시오.
upload.exe
에 대한 참조를 제공하지 않으므로 여기에 더 구체적인 제안을 드릴 수는 없습니다. 그러나 이러한 문제를 처리하는 일반적인 방법 중 하나는 먼저 명령에 변수를 할당 한 다음 실행하는 것입니다.
$command = "C:\\xampp\\upload.exe backup /command \"option confirm off\" \"put C:\\big boy\\Documents\\dev notes\\\" \"exit\"";
exec($command);
그것은 (이 그것을 cmd /k
와 함께 작동하는 방법입니다 만 추측)가 불과하다고 할 수 있습니다 :
$command = 'C:\xampp\upload.exe backup /command ""option confirm off" ⤦
⤥"put "c:\big boy\Documents\dev notes\" "exit""';
이는 쉽게 일을 해결 할 수 있습니다 디버깅 정보를 표시 할 수 있습니다 편집 : 이제 실제로 작성한대로 winscp.com
명령입니다.
다음과 같은 규칙으로
$command = 'C:\xampp\upload.exe backup /command "option confirm off" ⤦
⤥"put ""c:\big boy\Documents\dev notes\""" "exit"';
:
각 하나의 명령은 공백이 포함 된 경우 "
따옴표로 포장되어야한다.
option confirm off
"option confirm off"
은
put "c:\big boy\Documents\dev notes\"
"put ""c:\big boy\Documents\dev notes\"""
당신은 시스템 쉘 운영에서와 같은 동일한 기능을 수행 할 것
""
을 두 배로 될 수있는 명령은"
따옴표가 포함되어있는 경우, 사람들은있다. cmd에서 작동하는 명령을 제공하십시오. 그렇지 않으면 PHP 및 exec와 특별히 관련이 없지만 Windows 셸과 관련됩니다. – hakre