아래 코드를 사용하여 서버에서 mp3 파일을 다운로드하고 있습니다. 코드가 로컬 시스템 (Windows OS)에서 정상적으로 작동합니다.PHP 파일 다운로드가 Linux에서 작동하지 않습니다.
그러나 코드를 서버 (Linux)로 옮길 때 파일을 찾을 수 없습니다. 오류가 발생합니다. 나는 파일 경로가 올바른지 및 파일 여기
if ($fd = fopen ($filePath, "r")) {
$fsize = filesize($filePath);
$path_parts = pathinfo($filePath);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
case "mp3":
header("Content-type: audio/mpeg"); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$originalFileName."\""); // use 'attachment' to force a download
break;
default;
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$originalFileName."\"");
}
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd)
나는이 같은 것을 겪었을하고 문제가있는 파일이었다 이름이 잘못 되었다면 리눅스는 파일 확장자로 대소 문자를 구별합니다. 그래서'bla.JPG' 파일과'bla.jpg' 파일이 완전히 다른 것입니다. 이것을 확인하십시오 – Gerep
어디서 오류가 발생합니까? fopen은 실패 했습니까? – xdazz
또한 파일 사용 권한에 몇 가지 문제가있을 수 있습니다. 어떤 사용자 httpd가 실행되고 어떤 pemissions가 할당되는지/파일을 다운로드하려는 사용자에게 확인하십시오. – heximal