파일이 PHP 일 때 mod_headers가 헤더를 보내지 않음


9

.htaccess 파일을 다음과 같이 설정했습니다.

 Header set MyHeader "I'm Set!"

http://example.com/test/기본 색인 파일이없는 해당 디렉토리 ( ) 로 이동 하여 네트워크 활동 (이 경우 Chrome)을 보면 헤더가 전송되고 있음을 알 수 있습니다. PHP 파일 ( http://example.com/test/test.php)로 이동하면 헤더가 전송되지 않습니다.

index.html을 ( <pre>Hi콘텐츠로) 작성했으며 전송됩니다. 파일 이름을 .php헤더없이로 변경했습니다 . orignal test.php을로 변경하면 test.html가비지 모양의 코드가 출력되고 헤더가 전송됩니다. 내가 변경하는 경우 test.phptest.png, 나는 깨진 이미지 아이콘을 얻고, 헤더가 전송됩니다.

따라서 MIME 유형 및 파일 확장자 측면에서 위의 사항을 테스트하지 .php않으면 파일 (레지 트 또는 기타) 만 .htaccess 규칙이 적용되지 않거나 mod_headers 지시문이 설정되지 않은 것으로 보입니다 . 그러나 나는 이것을 테스트하는 방법을 모른다. 그리고 그것이 공유 서버이기 때문에 나는 httpd.conf찌르는 데 액세스 할 수 없다 .

아파치가 왜 PHP 파일에 대한 헤더 전송을 건너 뛸 것인지에 대한 아이디어가 있습니까?

나는 또한 시도했다 :

 <FilesMatch "\.(php)$">
     Header set MyHeader "I'm Set!"
 </FilesMatch>

PHP / CGI에서 PHP / FastCGI로 업데이트하면 문제가 해결 된 것으로 보입니다. 근본 원인이 무엇인지 아는 사람이 있다면 피드백을 받고 싶어합니다.
Anthony

1
앤서니, mod_fastcgi를 사용 했습니까? 나는 똑같은 동작을 경험하고 mod_fastcgi가 mod_headers 기능을 중단하는 것처럼 보입니다. 어제이
Onkeltem

여기에 동일 : / 뉴스 또는 해결 방법이 있습니까? 나는 이것이 더 많은 경우에 문제가 아니라고 상상할 수 없다 ...
Adrian Föder

답변:


4

CGI 스크립트를 실행할 때 예상되는 동작입니다. 최신 (2.4) 버전에서 mod_headers 워드 프로세서 :

성공의 기본값은 아래 나열된 것과 유사한 상황에서 항상 변경해야 할 수 있습니다. 또한 기존 헤더와 관련하여 항상 성공의 상위 세트가 아니기 때문에 두 시나리오에서이 지시문을 반복하는 것이 일부 시나리오에서 의미가 있습니다.

[...]
CGI 스크립트에 의해 생성 된 헤더를 수정하거나 제거하고 있습니다.이 경우 CGI 스크립트는 기본 테이블이 아닌 항상 해당 테이블에 있습니다.

원래 문제 (아마도 더 나은 설명 포함)는 버그 49308에 있습니다.


올바르게 읽는다면 Header always set MyHeader "I'm Set!"문제를 해결해야합니다. 누군가가 제안한 곳에서 답을 찾았고 그 경우 OP에서도 작동하지 않았다고 생각합니다. 그러나 나는 그들이 시도 Header set always했다는 것을 확신합니다.이 제안이 실패한 이유 일 수 있습니다.
Anthony

아니, 다시 가져가 나는 그 시도에 ctrl-z했고 그것은이었다 Header always set. 난 그냥 인용을 잘못 읽고 있습니까?
Anthony

원래 질문에서 당신은 그것을 지정하지 않았습니다. 확실합니까? Header always set MyHeader "I'm Set!"귀하의 예에 따르면 과 같은 것이어야합니다 .
Andrew M.

글쎄, 나는 아파치의 승인없이 그것을 시도했지만, 나는 한 번의 시도를 포기했을지도 모른다. 그리고 이제 작동하고 있으므로 CGI에서 FastCGI로 전환되었다고 가정하고 막상 의심 스러웠습니다.
Anthony
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.