PHP 手册
上一页 |  | 下一页

# 附录 P. 所支持的套接字传输器（Socket Transports）列表

以下是 PHP 内置用于基于流的套接字函数例如 fsockopen() 和 stream_socket_client() 的各种 URL 风格的套接字传输器。这些传输器不适用于 Sockets 扩展库。

要得到自己的 PHP 版本中所安装的传输器列表，使用 stream_get_transports()。

# Internet 领域：TCP，UDP，SSL 和 TLS

PHP 3，PHP 4，PHP 5。 `ssl://` & `tls://` 自 PHP 4.3 起可用。

`sslv2://` & `sslv3://` 自 PHP 5.0.2 起可用。

> 注意: 如果没有指定传输器，则假定为 `tcp://`。

- `127.0.0.1`

- `fe80::1`

- `www.example.com`

- `tcp://127.0.0.1`

- `tcp://fe80::1`

- `tcp://www.example.com`

- `udp://www.example.com`

- `ssl://www.example.com`

- `sslv2://www.example.com`

- `sslv3://www.example.com`

- `tls://www.example.com`

Internet 领域套接字在目标地址中还期望有一个端口号。在 fsockopen() 中在第二个参数中指定，这样就不会影响传输器的 URL。然而在 stream_socket_client() 和相关的函数中是用传统的 URL，端口号在传输器 URL 后面以冒号分隔而指定。

- `tcp://127.0.0.1:80`

- `tcp://[fe80::1]:80`

- `tcp://www.example.com:80`

> 带端口号的 IPv6 数字地址: 在上面的第二个例子中，IPv4 和主机名的例子只加了一个冒号和端口号，但 IPv6 的地址被放在方括号中：`[fe80::1]`。这是为了将 IPv6 地址中的冒号和用来分隔端口号的冒号区别开来。

`ssl://` 和 `tls://` 传输器（仅在 openssl 支持已编译入 PHP 后可用）是 `tcp://` 传输器加入 SSL 加密后的扩展。在 PHP 4.3.0 中 OpenSSL 支持必须被静态编译入 PHP，在 PHP 5.0.0 中可以编译为模块或者静态的。

`ssl://` 将根据远程服务器的兼容性和参数设置尝试与之建立 SSL V2 或 SSL V3 链接 `sslv2://` 和 `sslv3://` 将明确的选择 SSL V2 或 SSL V3 协议进行连接。

表 P-1. `ssl://` 和 `tls://` 传输器的上下文选项（自 PHP 4.3.2 起）

名称 | 用法 | 默认值
--- | --- | ---
`verify_peer` | `TRUE` 或 `FALSE`。用于 SSL 证书请求验证。 | `FALSE`
`allow_self_signed` | `TRUE` 或 `FALSE`。允许自签名的证书。 | `FALSE`
`cafile` | 本地文件系统中证书授权机构文件的位置，应和 `verify_peer` 上下文选项一起使用来认证远端的身份。 |
`capath` | 如果没有指定 `cafile` 或者如果该处没找到证书，则在 `capath` 指定的目录中搜索相配的证书。`capath` 必须是一个正确的被散列化的证书目录。 |
`local_cert` | 文件系统中本地证书文件的路径。必须是一个用 PEM 编码并包含你的证书和私人密钥的文件。可以选择包括发行者的证书链。 |
`passphrase` | 你的 `local_cert` 文件编码的 passphrase。 |
`CN_match` | 所期待的 Common Name。PHP 能进行有限的通配符匹配。如果 Common Name 与此不匹配，连接尝试会失败。 |

> 注意: 因为 `ssl://` 是 `https://` 和 `ftps://` 封装协议的底层传输器，适用于 `ssl://` 的任何上下文选项也适用于 `https://` 和 `ftps://`。

上一页 | 起始页 | 下一页
加密过滤器 | 上一级 | Unix 领域：Unix 和 UDG