2013-01-17 2 views
0

에서 호출 할 때 WinSCP를 실행하지 : 명령 프롬프트에서나는 코드 줄이 PHP

shell_exec("\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\\wamp\\www\\client\\transfer_script.txt"); 

명령 작품을, 나는 그것을 올바르게 이스케이프 것을 확신합니다. 또한, php 안전 모드가 off로 설정되어 있고, php.ini 파일에 disabled_functions도 없습니다.

PHP 스크립트를 호출 할 때 실행할 명령을 가져올 수 없습니다. 어떤 아이디어?

편집 : 이제 제대로 탈출했는지 확신합니다.

+1

왜 제대로 탈출 했습니까? 따옴표 안에서'\\\'를 사용하기를 기대합니다. – Madbreaks

+0

어떤 공간에서 문제가 발생합니까? – Ethan

+0

아마도 * 아니 * * 실제로 공간, 내 코멘트에서 제거되었습니다. – Madbreaks

답변

1

제대로 탈출했다고 생각하지 않습니다. 고려하십시오 :

// As you have it: 
$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\wamp\www\client\transfer_script.txt"; 
echo $cmd; 

> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client ransfer_script.txt 

그게 옳지 않습니다. (스크립트 소스를 가리키는 경우) 따옴표 외부에서 백 슬래시를 두 번 탈출 시도 :

$cmd = "\"C:\Program Files (x86)\WinSCP\winSCP.exe\" /console /script=c:\\wamp\\www\\client\\transfer_script.txt"; 
echo $cmd; 

> "C:\Program Files (x86)\WinSCP\winSCP.exe" /console /script=c:\wamp\www\client\transfer_script.txt 

더 나은.

즉 아직도 내가 Windows가 이중 백 슬래시를 필요로 단지의 경우, \\\\와 배-탈출 시도를하려는 작동하지 않는 경우

UPDATE. 또한 오류 코드를 확인하십시오.

+0

참조하십시오. 올바른 내용입니다. 나는 이것으로부터 적절한 명령을 얻었지만, shell_exec가 여전히 명령을 실행하지 않기 때문에 다른 문제가있다. – Ethan

+0

내 대답이 업데이트되었습니다. – Madbreaks

+0

호출이 실패하면'print_r (error_get_last())'를 확인 했습니까? – Madbreaks

관련 문제