저는 PHP (IIS/Windows)에서 sqlcmd를 호출 할 때이 문제를 해결하기 위해 머리를 터뜨 렸습니다. 그러나 왜 작동하지 않는지에 대한 완전한 손실을 느낍니다.PHP를 사용하여 sqlcmd를 호출하십시오.
코드 :
$sql = 'sqlcmd -S '.$serverName.' -d '.$databasename.' -U '.$userName.' -P '.$userPassword.' -q "exec GenerateInstallScript 123456890" -o C:\temp\sqlscripts.sql';
shell_exec($sql);
코드 실행 아무것도하지만은
C에서 생성됩니다 : \ 온도를
폴더에 있습니다. 시작/실행에서 수동으로 실행 해 보았지만 문제없이 실행됩니다. 심지어는 exec($sql)
을 시도해도 sqlcmd의 전체 절대 경로를 사용하고 cmd.exe를 호출 한 다음 sqlcmd를 호출했지만 아직까지는 아무 것도 시도하지 않았습니다.
IUSR 전체 및 사용자에게 폴더에 대한 전체 권한을 추가하여 IIS의 사용 권한이 아니라 여전히 사용 권한이 아닌지 확인했습니다.
또한 proc mon을 사용하면 그 내용이 무엇인지 알 수 있고 sqlcmd, cmd 또는 php.exe와 관련이없는 것을 볼 수 있습니다 (그 이유는 나를 보여줍니다. 통화 항목).
나는 PHP와 SQLCMD에 대해 많은 양의 검색을 해왔지만 대부분의 사람들이 sqlcmd를 사용하여 배치 파일을 호출하는 것처럼 보입니다. 나는 여기에서 그것을 실제로 할 수 없기 때문에 어떤 지침도 인정 될 것이다!
'shell_exec' 함수에서'sqlcmd'의 절대 경로/전체 경로를 사용해 보셨습니까? – Latheesan
$ sql = 'C : \ Program Files \ Microsoft SQL Server \ 100 \ Tools \ Binn \ SQLCMD.EXE -S'. $ serverName. ' -d '. $ databasename.' -U '. $ userName.' -P '. $ userPassword.' -q "exec GenerateInstallScript 123456890"-o C : \ temp \ sqlscripts.sql '; shell_exec ($ sql);
위 출력을 실행하지 않았습니다. 나는 \\과 아직 아무것도 사용하지 않으려 고 노력했다. 감사! – jmc1919
$ sql에 무엇이 들어 있는지 확인하려고 했습니까? shell_exec에서와 같이 명령 행에서 작동하는 명령을 시도 했습니까? – OIS