PHP5에서 AJAX 요청을 사용하여 다운로드 할 일부 파일 및/또는 디렉토리를 선택할 수있는 재귀 FTP 다운로드 스크립트를 개발했습니다. 서버가받는 POST 변수는 메모리를 전혀 차지하지 않는 짧은 파이프 구분 문자열입니다.원격 가상 서버에서 FTP 다운로드가 실패하지만 로컬 설정에서 완벽하게 작동합니다.
스크립트 자체는 내 로컬 Apache 설정에서 완벽하게 작동하고 각 디렉토리로 이동하여 모든 단일 파일과 폴더를 다운로드합니다.
Media Temple에서 원격 가상 서버를 설정하면 스크립트가 큰 구조에서 실패합니다. 이는 로컬 Apache에서 잘 처리됩니다.
증상으로 인해 일부 디렉터리가 파일로 간주되므로 스크립트가 해당 디렉터리로 들어가서 추가로 다운로드하지 않습니다.
스크립트는 원격으로 열려고 시도하여 경로가 디렉토리인지 여부를 확인합니다. 디렉토리를 열 수 있으면 완료 될 때까지 반복적으로 다운로드합니다.
Media Temple에서 호스팅되는 php.ini는 로컬 설정 (긴 실행 시간이 길거나 메모리 제한이 길어짐)보다 훨씬 더 높은 임계 값을 갖기 때문에 문제가되지 않습니다. 내 로컬 php.ini를 원격 서버에서 사용하기.
일반 호스팅에서 전용 가상 서버로 전환 할 때까지 "스크립트 헤더의 조기 종료"를 가져 오는 데 사용되는 오류 로그를 확인하십시오. 이제는 전혀 반응하지 않습니다.
내가이 문제를 해결하기 위해 시도한 것은 php.ini에서 다른 값으로 실험하고 최근에 만든 모든 새 파일과 디렉토리에 대해 flush() 및 ob_flush()를 시도한 것입니다. "스크립트 헤더의 조기 말미, PHP"의 발생을 막습니다.
의견이 있으십니까?
그냥 제안 ... 정중 한 질문은 '이봐!'로 시작하지 않습니다. - 그렇다면 개체를 열려고 시도하여 개체가 파일인지 또는 폴더인지 확인하는 것이 현명한 방법입니까? – pavium
"안녕하세요!" :) 아니, 아주 기분이 좋지 않아. 그러나, (내가 아는 한) 그것이 dir인지 여부를 확인하는 다른 방법은 없습니다 ... FTP에는 is_dir() 함수가 없습니다. 이전에 파일의 마지막 세그먼트에서 점을 확인했습니다. 그러나 디렉토리에는 점들이 포함될 수 있으므로 나쁜 생각이었습니다. 이것은 느리지 만 정확한 결과를 제공합니다. – Christoffer