PHP 프로그래밍에서 헤더 () 함수는 리디렉션 설정, 콘텐츠 유형 지정, 캐시 제어 등과 같은 원시 HTTP 헤더 정보를 클라이언트에 보내는 데 사용되는 매우 일반적인 도구입니다. 그러나 모드에서 PHP 스크립트를 실행할 때 헤더 () 기능이 여전히 작동 할 수 있습니까? 이 기사에서는 자세한 답변을 제공합니다.
먼저 PHP CLI 패턴이 무엇인지 이해해야합니다. CLI (Command Line Interface)는 웹 서버 (예 : Apache 및 Nginx)를 통해 구문 분석하지 않고 명령 줄을 통해 직접 PHP 스크립트를 실행하는 것입니다. 보통 우리는 입장합니다.
php script.php
이 경우 PHP는 더 이상 웹 페이지를 생성하는 도구 역할을하지 않지만 일반 스크립트 집행자 일뿐입니다.
Header () 함수의 주요 기능은 HTTP 헤더 정보를 클라이언트 (브라우저)에 다음과 같은 다음과 같은 다음과 같은 것입니다.
header('Location: https://m66.net/welcome');
exit;
이 코드는 브라우저가 지정된 URL로 리디렉션하도록 지시합니다.
그러나 참고 : Header ()는 실제 컨텐츠를 출력하지 않고 응답 헤더 만 수정합니다 . 다시 말해, 그 역할은 전적으로 PHP와 웹 서버 간의 HTTP 프로토콜에 달려 있습니다.
직접 답변 : 사용할 수 없거나 사용하는 경우에는 의미가 없습니다 .
이유는 다음과 같습니다.
CLI 모드에서 PHP는 HTTP 프로토콜, 요청 헤더 및 응답 헤더가없는 표준 출력 (STDOUT)에 출력을 직접 씁니다.
헤더 () 함수는 내부적으로 SAPI (Server API) CLI를 사용하여 환경에서 실행 중인지 확인합니다. 그렇다면 호출 할 때 실제 HTTP 헤더가 생성되지 않으며 오류를보고하지 않지만 결과는 STDOut에 영향을 미치지 않습니다.
예를 들어 다음 코드를 실행하십시오.
<?php
header('Content-Type: application/json');
echo json_encode(['status' => 'ok']);
웹 환경에서 브라우저는 컨텐츠 유형 헤더를 수신하여이를 JSON으로 인식합니다. 그러나 CLI 아래에서 실행하십시오.
php script.php
출력 만 볼 수 있습니다.
{"status":"ok"}
터미널은 HTTP 헤더를 전혀 이해하거나 처리하지 않기 때문입니다.
요약하려면 :
? CLI에서 Header () 호출은 오류를보고하지 않지만 잘못된 작업과 동일합니다.
? CLI에는 HTTP 층이 없기 때문에 HTTP 응답 헤더가 전송되지 않습니다.
? Echo , Print_r 및 기타 기능을 계속 사용하여 텍스트를 터미널에 출력 할 수 있습니다.
CLI 스크립트를 작성할 때 Header () 도 호출하는 경우 권장됩니다.
코드가 웹과 CLI에 모두 제공되는지 확인하십시오. 그렇다면 SAPI 탐지를 추가하는 것이 가장 좋습니다.