나는 "당신이 명령 행에서 그것을 할 수 없다"말을하려고, 내가했다 사실 이었지만 필자는 WinXP Pro SP3을 시험해 보았고, 저를 괴롭 히고 있습니다.
필자는 얼마 전에 (필자가 PHP의 세계에서 훨씬 더 친숙 해졌을 때) PHP를 네트워크 드라이브에 연결해야만했지만, 악몽을 꾸미기는했지만 결국에는 제대로 작동하게되었습니다. 다음을 수행하여
- "서비스"MMC 스냅인에서 Apache가 실행되는 사용자 계정을 로컬 사용자로 변경합니다. 계정에 네트워크 드라이브에 대한 액세스 권한이없는 순간 (AFAIK) 순간적으로 SYSTEM으로 설정됩니다. 이 작업을 수행 한 후에 서비스를 다시 시작해야합니다.
- 시도하고 액세스하기 전에 다음 줄을 추가하십시오. 사용자의 요구 사항에 맞게 드라이브 문자, UNC 경로, 사용자 이름 등을 변경하는
system('net use Z: "\\servername\sharename" PASSWORD /user:USERNAME /persistent:no');
. 드라이브가 이미 매핑되어 있어도이 작업을 수행하십시오. 나는 exec()
또는 shell_exec()
대신 system()
을 사용해야한다는 것을 기억하고있는 것 같습니다. 그렇지 않으면 작동하지 않습니다. 결과적으로 STDOUT으로 전달되는 출력을 중지하려면 출력 버퍼가 필요합니다.
나는 이것이 왜 효과가 있었는지 전혀 알지 못합니다. 비록 외부 프로그램 인 exec()
을 사용하지 않고 opendir()
과 fopen()
같은 원시 PHP 함수를 사용하려고했습니다.
dir
으로 전화하여 오류 메시지를 보려면 명령 끝 부분에 2>&1
을 붙이십시오. 그러면 STDERR이 STDOUT으로 리디렉션되므로 exec()
의 결과에 오류 메시지가 표시됩니다.
exec("dir Z:\\some\\path 2>&1")
당신이 네트워크 드라이브에 대한 UNC 경로로를 시도 : 같은
그래서 당신의 라인이 보일 것이다? '\\ sharename \ path \ to \ resource' –
또한 Apache 웹 서버 사용자는 공유에 액세스 할 권한이 있습니까? –