2014-10-01 6 views
0

전달중인 명령으로 실행되도록 배치 파일을 가져 오려고합니다. 보안상의 이유로 우리는 WScript.ShellPHP를 통해 windows 배치 파일에 값 전달

이 내 배치 파일이 모습입니다 통해 명령 행 호출을 실행 같은 :

@echo off 
pushd \\theServer\wwwroot\tuition\uploads\ 
pdftk PDF_Template.pdf fill_form %1 output %2 need_appearances 
popd 

나는 다음과 같이 박쥐 파일에 바르를 전달하고있다 :

$WshShell = new COM("WScript.Shell"); 
$WshShell->exec(getcwd().'\uploads\test.bat 1412194760.fdf output.pdf'); 

서버에서 박쥐 파일을 실행할 때 모든 것이 정상적으로 작동합니다. 그러나 PHP에서 실행될 때 어떤 결과도 얻지 못합니다.

이 예제는 위의 코드를 사용하여 제거하려고하는 전체 경로가있을 때 잘 작동합니다.

$WshShell->exec('"pdftk" C:\\inetpub\\wwwroot\\tuition\\uploads\\Educational_Assistance_Request_Form_North_America.pdf fill_form C:\\inetpub\\wwwroot\\tuition\\uploads\\'.$fdf_file.' output C:\\inetpub\\wwwroot\\tuition\\uploads\\'.$newPDF.' need_appearances'); 

내가 뭘 잘못하고있는 걸 볼 수 있습니까?

업데이트 :

시험은 열심히 배치 파일로 값을 코드로 : 그때 단지 모두 runexecute

$WshShell->run(getcwd().'\uploads\test.bat'); 
$WshShell->exec(getcwd().'\uploads\test.bat'); 
으로 파일을 실행 시도

pdftk Educational_Assistance_Request_Form_North_America.pdf fill_form 1412194760.fdf output output.pdf need_appearances 

이 테스트도 실패했습니다.

배치 파일을 실행하는 쉘에 대한 권한 오류 일 수 있습니까?

FIX : 나는이 위치에 exec 명령을 실행중인 그래서 비록 : 나는 그것을 기록 할 때, 그것은 단지 cwd에서 실행하고 업로드 폴더를 무시

getcwd().'\uploads\test.bat 

.

나는이에 배치 파일을 변경하고 지금은 잘 작동 :

pdftk uploads/Educational_Assistance_Request_Form_North_America.pdf fill_form uploads/%1 output uploads/%2 need_appearances 

답변

0

내가 대신 WshShell 개체의 "실행"명령을 사용합니다. 어쨌든 왜 큰 따옴표로 묶인 pdftk 명령을 가지고 있습니까? "

+0

마지막 예제는 내가 벗어나려고 노력하고있는 것이 었습니다. 왜 큰 따옴표를 사용했는지 모르겠지만 벌금. – SBB

관련 문제