HTTP에 액세스 할 수 없음 웹 서비스 코드에 데이터를 넣을 수 없습니다

StackOverflow https://stackoverflow.com/questions/145855

  •  02-07-2019
  •  | 
  •  

문제

모두,

제가 쓰고있는 응용 프로그램의 일부로 나는 로컬 파일 저장소에 분석, 검증 및 추가 된 ImageData를 수용하는 HTTP Put Webservice가 있어야합니다.

내 문제는 크기 검증 후에 발생합니다

$_SERVER['CONTENT_LENGTH']

> 0 값이 있고이 값은 테스트 파일 크기와 동일 하므로이 지점까지 모든 것이 잘 진행되고 있다고 가정 할 수 있습니다. 하지만 내가 사용하여 들어오는 스트림 데이터를 읽으려고 할 때

file_get_contents('php://stdin');

나는 빈 줄을 얻는다. 나는 또한 사용을 시도했다

file_get_contents('php://input');

그리고 이것은 나에게 빈 줄의 같은 결과를줍니다.

모든 도움, 제안 또는 방향에 감사드립니다.

NB : 사용 중입니다

  • PHP 5.2.6
  • 아파치 2.0
도움이 되었습니까?

해결책

내 가장 좋은 추측은 httpd.conf를 변경하여 요청을 거부하지 않도록해야한다는 것입니다. 확인 했습니까?

다른 팁

Apache HTTPD는 기본적으로 PUT 요청을 거부합니다. mod_put을 확인할 수 있습니다.
http://perso.ec-lyon.fr/lyonel.vincent/apache/mod_put.html

httpd.conf에 이것을 추가하십시오.

<Location /upload/dir>
  EnablePut On
  AuthType Basic
  AuthName "Web publishing"
  AuthUserFile /www/etc/passwd
  AuthGroupFile /www/etc/group
  <Limit PUT>
    require valid-user
  </Limit>
</Location>

file_get_contents "R"매개 변수를 사용하지 않습니다 PHP 매뉴얼 페이지:

string file_get_contents  ( string $filename  [, int $flags...)

유효한 $flag 값은 FILE_USE_INCLUDE_PATH, FILE_TEXT, FILE_BINARY.

"R"플래그를 제거하고 다시 시도해보십시오.

편집하다 - "R"플래그가 무시되고 있었기 때문에 문제의 근본이 아닙니다.

거기있는 것처럼 보입니다 PHP에서보고 된 버그 ~에 관하여 file_get_contents HTTP 게시물의 빈 문자열을 반환합니다. 버그 설명에서 :

file_get_contents('php://input') (그리고 또한 file, fopen+fread) encType = "multipart/form-data"로 제출 된 양식을 제출할 때 게시물 데이터를 반환하지 않습니다.

EncType를 지정하지 않고 동일한 양식을 제출하면 (기본 "Application/X-WWW-Form-urlencoded"가 사용됨) 모든 작동합니다.

따라서 지정된 형태의 Enctype를 multipart/form-data, 분명히 이미지 업로드에 이상적이지 않습니다. W3 양식 사양:

콘텐츠 유형 "Application/X-WWW-FORM-URLENCODED"는 대량의 이진 데이터 또는 비 ASCII 문자를 포함하는 텍스트를 전송하는 데 비효율적입니다. 콘텐츠 유형 "multipart/form-data"는 파일, 비 ASCII 데이터 및 이진 데이터를 포함하는 양식을 제출하는 데 사용해야합니다.

추가 편집

이 버그는 PHP 버전에서 해결 된 것 같습니다. 읽기 버퍼가 캐리지 퇴행 / Newline Char로 시작하지 않는지 확인 했습니까? 논의 된 것과 다소 비슷한 문제가 있습니다. SitePoint에서.

달리기를 시도하십시오 strlen 입력에서 길이가 무엇인지 확인하십시오.

그만큼 r 두 번째 arg가 옳지 않기 때문에 당신은 있습니다. file_get_contents 사용하지 않습니다 a/r/w/a+/r+/w+ 그 주장 fopen 용도. 당신은 아마 그것을 제거하고 그냥하고 싶을 것입니다 :

file_get_contents('php://input');

보다 http://us3.php.net/file_get_contents.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top