오늘날의 WEB 프로그램 개발 기술은 논쟁으로 가득 차 있다는 것을 알고 있지만, 앞으로 WEB 기술이 어떻게 발전하든 WEB 프로그램 품질 검사를 위한 기본 통신 프로토콜은 매우 중요합니다. 오늘은 WEB 애플리케이션의 내부 작동 방식을 소개하겠습니다.
PHP에는 fopen(), copy(), file_exists() 및 filesize()와 같은 파일 시스템 함수와 함께 사용할 수 있는 다양한 내장 URL 스타일 래퍼 프로토콜이 함께 제공됩니다. 이러한 패키징 프로토콜 외에도 stream_wrapper_register()를 통해 사용자 정의 패키징 프로토콜을 등록할 수도 있습니다.
참고: 캡슐화된 프로토콜을 설명하는 데 사용되는 URL 구문은cheme://... 구문만 지원합니다. Scheme:/ 및 Scheme: 구문은 지원되지 않습니다.
php 프로토콜 유형
file:// — 로컬 파일 시스템에 액세스
http:// — HTTP(s) URL에 액세스
ftp:// — FTP URL에 액세스
php:// — 개별 입력/출력 스트림에 액세스(I/O 스트림)
zlib:// — 압축된 스트림
data:// — 데이터(RFC 2397)
glob:// — 일치하는 파일 경로 패턴 찾기
phar :// — PHP 아카이브
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 오디오 스트리밍
expect:// — 대화형 스트리밍 처리
PHP. ini
allow_url_fopen: on 기본적으로 이 옵션을 켜면 URL 형식의 fopen 캡슐화 프로토콜이 활성화되어 URL 개체 파일 등에 대한 액세스가 허용됩니다.
allow_url_include: off는 기본적으로 꺼져 있습니다. 이 옵션이 켜져 있으면 URL 개체 파일 등을 포함할 수 있습니다.
file:// 프로토콜
file:// - 영향을 받지 않고 로컬 파일 시스템에 액세스합니다. byallow_url_fopen 및allow_url_include
Usage
file:// [파일의 절대 경로 및 파일 이름]
http://127.0.0.1/code/1.php?file=file:///E:\phpStudy\WWW\code\phpinfo.php
php:// 프로토콜
php:// — 개별 입력에 액세스 /output streams (I/O streams )
allow_url_fopen을 활성화할 필요는 없으며, php://input, php://stdin, php://memory 및 php://temp만 허용_url_include를 활성화해야 합니다.
php://stdin, php://stdout 및 php://stderr
php://stdin, php://stdout 및 php://stderr을 사용하면 해당 입력 또는 출력 스트림에 직접 액세스할 수 있습니다. PHP 프로세스.
php://stdin은 읽기 전용이고, php://stdout 및 php://stderr은 쓰기 전용입니다.
php://stdin
<?php while($line = fopen('php://stdin','r')) {//open our file pointer to read from stdin echo $line."\n"; echo fgets($line);//读取
<?php $fd = fopen('php://stdout', 'w'); if ($fd) { echo $fd."\n"; fwrite($fd, "test"); fwrite($fd, "\n"); fclose($fd); } ?>
<?php $stderr = fopen( 'php://stderr', 'w' ); echo $stderr."\n"; fwrite($stderr, "uknow" ); fclose($stderr); ?>
가장 일반적으로 사용되는 의사 프로토콜로, 일반적으로 임의의 파일을 읽는 데 사용할 수 있습니다.
php://filter는 데이터 스트림이 열릴 때 애플리케이션을 필터링하도록 설계된 메타 래퍼입니다. 이는 스트림 콘텐츠를 읽기 전에 추가 필터를 적용할 기회가 없는 readfile(), file() 및 file_get_contents()와 같은 일체형 파일 함수에 유용합니다.
resource=<필터링할 데이터 스트림> 이 매개변수는 필수입니다. 필터링하려는 데이터 스트림을 지정합니다.
read=<체인 필터 목록 읽기> 이 매개변수는 선택사항입니다. 하나 이상의 필터 이름을 파이프 문자로 구분하여 설정할 수 있습니다.
write=<체인 필터 목록 쓰기> 이 매개변수는 선택사항입니다. 하나 이상의 필터 이름을 파이프 문자로 구분하여 설정할 수 있습니다.
<두 체인에 대한 필터 목록> read= 또는 write= 접두사가 붙지 않은 모든 필터 목록은 읽기 또는 쓰기 체인에 적절하게 적용됩니다.
<?php include($_GET['file']) ?>
http://127.0.0.1/code/1.php?file=php://filter/read=convert.base64-encode/resource=./phpinfo.php
이 글을 읽고 믿겠습니다 사례 당신은 방법을 마스터했습니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
관련 읽기:
PHP 제품 플래시 세일 타이밍 구현(대규모 트래픽 해결을 위한 솔루션)
PHP가 웹사이트의 대규모 트래픽과 높은 동시성을 해결하는 방법
위 내용은 PHP 프로토콜에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!