PHP SMB 파일 업로드로 인해 500 내부 서버 오류 발생
P粉113938880
P粉113938880 2023-08-30 13:53:12
0
1
657
<p>SMB를 통해 로컬 폴더에 있는 파일을 FTP 서버에 업로드하려고 하면 파일이 업로드되지만 서버는 다음 메시지와 함께 500 내부 서버 오류를 반환합니다. </p> <인용문> <p>경고: fopen(File.xls): 스트림을 열 수 없습니다. 해당 파일이나 디렉터리가 없습니다</p> </인용문> <p>내 업로드 기능은 다음과 같습니다.</p> <pre class="brush:php;toolbar:false;">공개 함수 업로드($fileToUpload, $targetPath = "") { if (!empty($targetPath)) { if (substr($targetPath, -1, 1) != '/') { $targetPath .= "/";; } } $fileName = 기본 이름($fileToUpload); $this->srvShare->put($fileToUpload, $targetPath . $fileName); }</pre> <p>이 경우 <strong>$fileToUpload</strong>는 'File.xls'와 같습니다. 전체 경로를 함수에 전달하려고 시도했지만 여전히 동일한 오류가 발생합니다. 업로드가 성공했습니다. 파일이 이미 서버에 있지만 여전히 500 내부 서버 오류가 발생하므로 코드를 계속 진행할 수 없습니다. </p> <p>이것은 smb NativeShare의 put() 함수입니다: </p> <pre class="brush:php;toolbar:false;">/*** 로컬 파일 업로드 * * @param string $source 로컬 파일 * @param string $target 대상 파일 * @return 부울 * * @throws IcewindSMBExceptionNotFoundException * @throws IcewindSMBExceptionInvalidTypeException*/ 공개 함수 put($source, $target) { $sourceHandle = fopen($source, 'rb'); $targetUrl = $this->buildUrl($target); $targetHandle = $this->getState()->create($targetUrl); while ($data = fread($sourceHandle, NativeReadStream::CHUNK_SIZE)) { $this->getState()->write($targetHandle, $data, $targetUrl); } $this->getState()->close($targetHandle, $targetUrl); 사실을 반환; }</pre></p>
P粉113938880
P粉113938880

모든 응답(1)
P粉882357979

알겠습니다..그래서 오류를 성공적으로 수정했습니다. 문제는 이 업로드 기능을 다른 곳에서 사용해 봤고 동일한 매개변수로 다시 사용할 수 있다고 가정하고 있다는 것입니다. 매개변수 하나를 변경해야 하는데 이제 작동합니다 :)

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿