首页 > 编程语言 >PHP伪协议(Pseudo-Protocols)

PHP伪协议(Pseudo-Protocols)

时间:2024-08-27 09:49:07浏览次数:10  
标签:文件 PHP php Pseudo 访问 file fopen Protocols

介绍

在PHP中,"伪协议" 是一种特殊的协议,它并不涉及传统的网络传输,而是用于访问特定的PHP功能或资源。这些伪协议通常以 php:// 开头,并用于操作数据流、内存、进程的输入输出等。

常见的PHP伪协议

php://input: 只读流,用于读取原始的POST数据。可以多次读取并返回相同的内容。

$data = file_get_contents('php://input');

php://output: 可写流,用于向输出缓冲区写入数据。通常用于直接输出内容到浏览器。

$output = fopen('php://output', 'w');
fwrite($output, "Hello World");
fclose($output);

php://memory: 使用内存作为临时文件进行读写操作的流。在内存中保存数据,关闭流后数据将丢失。
php://temp: 类似于php://memory,但超过一定大小(默认2MB)后,数据将自动存储到磁盘的临时文件中。

$stream = fopen('php://memory', 'w+');
fwrite($stream, 'Some data');
rewind($stream); // 使文件位置指针重新定位到文件的开始位置
echo stream_get_contents($stream);
fclose($stream);

php://stdin: 只读流,允许访问PHP进程的标准输入。适用于从命令行或其他输入源读取数据。

$input = fgets(fopen('php://stdin', 'r')); // 读取一行
$input = file_get_contents('php://stdin'); // 读取整个输入

// 命令行交互获取姓名
echo "Please enter your name: ";
$name = trim(fgets(fopen('php://stdin', 'r')));
echo "Hello, $name!\n";

php://stdout: 可写流,允许访问PHP进程的标准输出。适用于命令行或其他输出目标写入数据。 输出数据到命令行或者将输出数据重定向到文件或其他进程。

fwrite(fopen('php://stdout', 'w'), "This message is displayed in the terminal.\n");

php://stderr: 可写流,允许访问PHP进程的标准错误输出。适用于向命令行或其他错误流目标写入错误消息。输出错误或警告信息,以便与标准输出区分开来。

fwrite(fopen('php://stderr', 'w'), "This is an error message.\n");

其他常见的PHP封装协议

file:// — 访问本地文件系统
允许读取和写入本地文件系统的文件。使用file://可以打开和操作文件,就像在文件路径前面加上file://一样。
fopen('file:///path/to/file.txt', 'r');

http:// 和 https:// — 访问HTTP(S) URLs
用于通过HTTP或HTTPS协议从远程服务器读取数据,类似于浏览器访问网页的方式。可以使用它来执行GET、POST请求等。
fopen('http://example.com', 'r');

ftp:// 和 ftps:// — 访问FTP(S) URLs
用于通过FTP协议从远程服务器上传或下载文件。支持匿名访问和带有用户名密码的认证。
fopen('ftp://user:[email protected]/file.txt', 'r');

zlib:// — 压缩流
提供对gzip压缩文件的读写操作。常用于处理压缩数据。
fopen('compress.zlib://example.gz', 'r');

data:// — 数据(基于RFC 2397)
允许内联数据作为文件资源来使用。data://协议通常用于处理base64编码的数据。
fopen('data://text/plain;base64,SGVsbG8gd29ybGQ=', 'r');

glob:// — 查找匹配的文件路径模式
用于根据指定的文件模式查找匹配的文件路径。类似于Linux的glob命令。
foreach (glob('glob://*.txt') as $filename) { echo $filename; }

phar:// — PHP归档
用于访问PHP归档文件(PHAR文件)中的内容。支持类似于ZIP的压缩文件结构。有些SDK使用该协议来打包和分发代码。
fopen('phar://archive.phar/file.txt', 'r');

ssh2:// — Secure Shell 2
提供通过SSH协议访问远程服务器的能力。适用于通过SSH传输文件或执行命令。
fopen('ssh2://username@hostname/path/to/file.txt', 'r');

rar:// — RAR
用于访问RAR压缩文件中的内容。适合处理RAR压缩包的文件提取。
fopen('rar://archive.rar/file.txt', 'r');

ogg:// — 音频流
用于读取Ogg格式的音频流。通常在音频处理应用中使用。
fopen('ogg://stream.ogg', 'r');

expect:// — 处理交互式的流
用于处理交互式命令行操作。可以在PHP脚本中控制和操作交互式命令。
fopen('expect://command', 'r');

标签:文件,PHP,php,Pseudo,访问,file,fopen,Protocols
From: https://www.cnblogs.com/cyamazing/p/18381969

相关文章

  • 还在烦恼Cosplay论坛开发?探索PHP+Vue的完美解决方案!
    ......
  • 001、安装thinkphp8
    01、在目录右键打开powershell,输入composer,能正常显示 02、输入composerconfig-grepo.packagistcomposerhttps://mirrors.aliyun.com/composer/,切换到国内镜像 03、输入composercreate-projecttopthink/thinkPHMTP8创建一个名字叫phmtp8的工程 04、在有composer......
  • 为什么说 Swoole 是 PHP 程序员技术水平的分水岭?
    大家好,我是码农先森。谈到这个话题有些朋友心中不免会有疑惑,为什么是Swoole而不是其他呢?因为Swoole是基于C/C++语言开发的高性能异步通信扩展,覆盖的特性足够的多,有利于PHP程序员接触更全面的技术知识点。大多数的朋友踏入到PHP的大门都是因其简单的语法及其弱类型的特......
  • PHP基础之面向对象讲解
    目录1面向对象1.1PHP类定义1.2创建对象1.3构造&析构函数1.3.1构造函数1.3.2析构函数1.4继承1.4.1方法重写1.4.2父子类初始化顺序1.4.3示例说明1.5访问控制1.5.1属性的访问控制1.5.2方法的访问控制1.6接口&抽象1.6.1接口1.6.2抽象类1.7关键字1.7.1parent,self,t......
  • ZBLOG PHP程序不兼容PHP7.1怎么解决
    在ZBLOGPHP程序里,对于PHP7.+版本的兼容及支持情况目前尚不够理想,不时会有报错现象发生,这就要求我们通过人工操作来处理兼容性方面的问题。举例来说,有时会出现“operatornotsupportedforstrings”这样的提示性问题,那么针对这种情况,应当采取何种方式加以解决呢? 找到:......
  • Z-BlogPHP问题处理
    为了解决您的Z-BlogPHP相关问题,请尝试以下通用步骤:检查错误日志:查看Z-BlogPHP的错误日志文件,通常在zb_users/logs/目录下。检查配置文件:确认zb_users/config.php文件中的数据库设置是否正确。文件权限检查:确保Z-BlogPHP目录及其子目录有正确的读写权限。主题兼容性:如果问题出......
  • zblogphp的错误提示分为“错误原因”和“文件位置”两个部分
    zblogphp的错误提示主要划分为“错误原因”以及“文件位置”这两个部分。就“错误原因”而言,其通常是由一系列的专业术语所构成的,对于不熟悉php的人来说,可能难以理解。但别担心,您可以将其复制下来,然后使用百度翻译之类的工具进行翻译,说不定运气好的话能大概弄明白。然而,最......
  • 基于PHP的文件包含介绍
    引言:在实际开发过程中,经常会遇到部分模块功能需要重复使用的情况,比如数据库的增删改查,文件包含通过将需要重复使用的功能模块代码引入其他文件的内容,实现重用代码、分离配置等。然而,如果文件包含操作不当,可能会引发所谓的文件包含漏洞,导致安全问题。一、本地文件包含这种类型......
  • ZBlog网站PHP发表文章时间显示XX天前
    functionTimeAgo($ptime){$ptime=strtotime($ptime);$etime=time()-$ptime;if($etime<1)return'刚刚';$interval=array(12*30*24*60*60=>'年前('.date('Y-m-d',$ptime).')......
  • PHP与MySQL数据库是如何结合使用的?
    PHP与MySQL数据库的结合使用主要通过PHP脚本与MySQL数据库进行交互,实现数据的存储、查询、更新和删除等操作。以下是结合使用的详细步骤和方法:1:准备工作:确保PHP和MySQL环境可用。创建MySQL数据库和表,以存储数据。2:连接数据库:使用mysqli连接MySQL数据库,代码示例为:$mys......