전달중인 명령으로 실행되도록 배치 파일을 가져 오려고합니다. 보안상의 이유로 우리는 WScript.Shell
PHP를 통해 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');
내가 뭘 잘못하고있는 걸 볼 수 있습니까?
업데이트 :
시험은 열심히 배치 파일로 값을 코드로 : 그때 단지 모두 run
및 execute
$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
마지막 예제는 내가 벗어나려고 노력하고있는 것이 었습니다. 왜 큰 따옴표를 사용했는지 모르겠지만 벌금. – SBB