## **option选项**
>[info]以下`option`参数的`value`应该被设置成bool类型:
| 选项 | 将`value`设置为 | 备注 |
| --- | --- | --- |
| **`CURLOPT_AUTOREFERER`** | **`TRUE`** 时将根据*Location:* 重定向时,自动设置 header 中的*Referer:* 信息。 | |
| **`CURLOPT_BINARYTRANSFER`** | 设为 **`TRUE`** ,将在启用**CURLOPT_RETURNTRANSFER** 时,返回原生的(Raw)输出。 | 从 PHP 5.1.3 开始,此选项不再有效果:使用**CURLOPT_RETURNTRANSFER** 后总是会返回原生的(Raw)内容。 |
| **`CURLOPT_COOKIESESSION`** | 设为 **`TRUE`** 时将开启新的一次 cookie 会话。它将强制 libcurl 忽略之前会话时存的其他 cookie。 libcurl 在默认状况下无论是否为会话,都会储存、加载所有 cookie。会话 cookie 是指没有过期时间,只存活在会话之中。 | |
| **`CURLOPT_CERTINFO`** | **`TRUE`** 将在安全传输时输出 SSL 证书信息到*STDERR*。 | 在 cURL 7.19.1 中添加。 PHP 5.3.2 后有效。 需要开启 **`CURLOPT_VERBOSE`** 才有效。 |
| **`CURLOPT_CONNECT_ONLY`** | **`TRUE`** 将让库执行所有需要的代理、验证、连接过程,但不传输数据。此选项用于 HTTP、SMTP 和 POP3。 | 在 7.15.2 中添加。 PHP 5.5.0 起有效。 |
| **`CURLOPT_CRLF`** | 启用时将Unix的换行符转换成回车换行符。 | |
| **`CURLOPT_DNS_USE_GLOBAL_CACHE`** | **`TRUE`** 会启用一个全局的DNS缓存。此选项非线程安全的,默认已开启。 | |
| **`CURLOPT_FAILONERROR`** | 当 HTTP 状态码大于等于 400, **`TRUE`** 将将显示错误详情。 默认情况下将返回页面,忽略 HTTP 代码。 | |
| **`CURLOPT_SSL_FALSESTART`** | **`TRUE`** 开启 TLS False Start (一种 TLS 握手优化方式) | cURL 7.42.0 中添加。自 PHP 7.0.7 起有效。 |
| **`CURLOPT_FILETIME`** | **`TRUE`** 时,会尝试获取远程文档中的修改时间信息。 信息可通过[curl\_getinfo()](https://www.php.net/manual/zh/function.curl-getinfo.php)函数的`CURLINFO_FILETIME`选项获取。 | |
| **`CURLOPT_FOLLOWLOCATION`** | **`TRUE`** 时将会根据服务器返回 HTTP 头中的*"Location: "*重定向。(注意:这是递归的,*"Location: "*发送几次就重定向几次,除非设置了 **`CURLOPT_MAXREDIRS`** ,限制最大重定向次数。)。 | |
| **`CURLOPT_FORBID_REUSE`** | **`TRUE`** 在完成交互以后强制明确的断开连接,不能在连接池中重用。 | |
| **`CURLOPT_FRESH_CONNECT`** | **`TRUE`** 强制获取一个新的连接,而不是缓存中的连接。 | |
| **`CURLOPT_FTP_USE_EPRT`** | **`TRUE`** 时,当 FTP 下载时,使用 EPRT (和 LPRT)命令。 设置为 **`FALSE`** 时禁用 EPRT 和 LPRT,仅仅使用PORT 命令。 | |
| **`CURLOPT_FTP_USE_EPSV`** | **`TRUE`** 时,在FTP传输过程中,回到 PASV 模式前,先尝试 EPSV 命令。设置为 **`FALSE`** 时禁用 EPSV。 | |
| **`CURLOPT_FTP_CREATE_MISSING_DIRS`** | **`TRUE`** 时,当 ftp 操作不存在的目录时将创建它。 | |
| **`CURLOPT_FTPAPPEND`** | **`TRUE`** 为追加写入文件,而不是覆盖。 | |
| **`CURLOPT_TCP_NODELAY`** | **`TRUE`** 时禁用 TCP 的 Nagle 算法,就是减少网络上的小包数量。 | PHP 5.2.1 有效,编译时需要 libcurl 7.11.2 及以上。 |
| **`CURLOPT_FTPASCII`** | **`CURLOPT_TRANSFERTEXT`** 的别名。 | |
| **`CURLOPT_FTPLISTONLY`** | **`TRUE`** 时只列出 FTP 目录的名字。 | |
| <span style="color:blue">**`CURLOPT_HEADER`**</span> | 启用时会将头文件的信息作为数据流输出。 | |
| **`CURLINFO_HEADER_OUT`** | **`TRUE`** 时追踪句柄的请求字符串。 | 从 PHP 5.1.3 开始可用。 **`CURLINFO_`** 的前缀是有意的(intentional)。 |
| **`CURLOPT_HTTPGET`** | **`TRUE`** 时会设置 HTTP 的 method 为 GET,由于默认是 GET,所以只有 method 被修改时才需要这个选项。 | |
| **`CURLOPT_HTTPPROXYTUNNEL`** | **`TRUE`** 会通过指定的 HTTP 代理来传输。 | |
| **`CURLOPT_MUTE`** | **`TRUE`** 时将完全静默,无论是何 cURL 函数。 | 在 cURL 7.15.5 中移出(可以使用 CURLOPT\_RETURNTRANSFER 作为代替) |
| **`CURLOPT_NETRC`** | **`TRUE`** 时,在连接建立时,访问~/.netrc文件获取用户名和密码来连接远程站点。 | |
| **`CURLOPT_NOBODY`** | **`TRUE`** 时将不输出 BODY 部分。同时 Mehtod 变成了 HEAD。修改为 **`FALSE`** 时不会变成 GET。 | |
| **`CURLOPT_NOPROGRESS`** | **`TRUE`** 时关闭 cURL 的传输进度。注意: PHP 默认自动设置此选项为 **`TRUE`** ,只有为了调试才需要改变设置。| |
| **`CURLOPT_NOSIGNAL`** | **`TRUE`** 时忽略所有的 cURL 传递给 PHP 进行的信号。在 SAPI 多线程传输时此项被默认启用,所以超时选项仍能使用。 | cURL 7.10时被加入。 |
| **`CURLOPT_PATH_AS_IS`** | **`TRUE`** 不处理 dot dot sequences (即 ../ ) | cURL 7.42.0 时被加入。 PHP 7.0.7 起有效。 |
| **`CURLOPT_PIPEWAIT`** | **`TRUE`** 则等待 pipelining/multiplexing。 | cURL 7.43.0 时被加入。 PHP 7.0.7 起有效。 |
| <span style="color:red">**`CURLOPT_POST`**</span> | **`TRUE`** 时会发送 POST 请求,类型为:*application/x-www-form-urlencoded*,是 HTML 表单提交时最常见的一种。 | |
| **`CURLOPT_PUT`** | **`TRUE`** 时允许 HTTP 发送文件。要被 PUT 的文件必须在 **`CURLOPT_INFILE`** 和 **`CURLOPT_INFILESIZE`** 中设置。 | |
| <span style="color:red">**`CURLOPT_RETURNTRANSFER`**</span> | **`TRUE`** 将[curl\_exec()](https://www.php.net/manual/zh/function.curl-exec.php)获取的信息以字符串返回,而不是直接输出。 | |
| <span style="color:red">**`CURLOPT_SAFE_UPLOAD`**</span> | **`TRUE`** 禁用*@*前缀在 **`CURLOPT_POSTFIELDS`** 中发送文件。 意味着*@*可以在字段中安全得使用了。 可使用[CURLFile](https://www.php.net/manual/zh/class.curlfile.php)作为上传的代替。 | PHP 5.5.0 中添加,默认值 **`FALSE`** 。 PHP 5.6.0 改默认值为 **`TRUE`** 。. PHP 7 删除了此选项, 必须使用 CURLFile interface 来上传文件。 |
| **`CURLOPT_SASL_IR`** | **`TRUE`** 开启,收到首包(first packet)后发送初始的响应(initial response)。 | cURL 7.31.10 中添加,自 PHP 7.0.7 起有效。 |
| **`CURLOPT_SSL_ENABLE_ALPN`** | **`FALSE`** 禁用 SSL 握手中的 ALPN (如果 SSL 后端的 libcurl 内建支持) 用于协商到 http2。 | cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
| **`CURLOPT_SSL_ENABLE_NPN`** | **`FALSE`** 禁用 SSL 握手中的 NPN(如果 SSL 后端的 libcurl 内建支持),用于协商到 http2。 | cURL 7.36.0 中增加, PHP 7.0.7 起有效。 |
| <span style="color:red">**`CURLOPT_SSL_VERIFYPEER`**</span> | **`FALSE`** 禁止 cURL 验证对等证书(peer's certificate)。要验证的交换证书可以在 **`CURLOPT_CAINFO`** 选项中设置,或在 **`CURLOPT_CAPATH`** 中设置证书目录。 | 自cURL 7.10开始默认为 **`TRUE`** 。从 cURL 7.10开始默认绑定安装。 |
| **`CURLOPT_SSL_VERIFYSTATUS`** | **`TRUE`** 验证证书状态。 | cURL 7.41.0 中添加, PHP 7.0.7 起有效。 |
| **`CURLOPT_TCP_FASTOPEN`** | **`TRUE`** 开启 TCP Fast Open。 | cURL 7.49.0 中添加, PHP 7.0.7 起有效。 |
| **`CURLOPT_TFTP_NO_OPTIONS`** | **`TRUE`** 不发送 TFTP 的 options 请求。 | 自 cURL 7.48.0 添加, PHP 7.0.7 起有效。 |
| **`CURLOPT_TRANSFERTEXT`** | **`TRUE`** 对 FTP 传输使用 ASCII 模式。对于LDAP,它检索纯文本信息而非 HTML。在 Windows 系统上,系统不会把*STDOUT*设置成二进制 模式。 | |
| **`CURLOPT_UNRESTRICTED_AUTH`** | **`TRUE`** 在使用 **`CURLOPT_FOLLOWLOCATION`** 重定向 header 中的多个 location 时继续发送用户名和密码信息,哪怕主机名已改变。 | |
| **`CURLOPT_UPLOAD`** | **`TRUE`** 准备上传。 | |
| **`CURLOPT_VERBOSE`** | **`TRUE`** 会输出所有的信息,写入到*STDERR*,或在 **`CURLOPT_STDERR`** 中指定的文件。 | |
>[info]以下`option`的`value`应该被设置成integer
| 选项 | 设置`value`为 | 备注 |
| --- | --- | --- |
| **`CURLOPT_BUFFERSIZE`** | 每次读入的缓冲的尺寸。当然不保证每次都会完全填满这个尺寸。 | 在cURL 7.10中被加入。 |
| **`CURLOPT_CLOSEPOLICY`** | **`CURLCLOSEPOLICY_*`** 中的一个。注意: 此选项已被废弃,它不会被实现,永远不会有效果啦。| PHP 5.6.0 中移除。 |
| **`CURLOPT_CONNECTTIMEOUT`** | 在尝试连接时等待的秒数。设置为0,则无限等待。 | |
| **`CURLOPT_CONNECTTIMEOUT_MS`** | 尝试连接等待的时间,以毫秒为单位。设置为0,则无限等待。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。 | 在 cURL 7.16.2 中被加入。从 PHP 5.2.3 开始可用。 |
| **`CURLOPT_DNS_CACHE_TIMEOUT`** | 设置在内存中缓存 DNS 的时间,默认为120秒(两分钟)。 | |
| **`CURLOPT_EXPECT_100_TIMEOUT_MS`** | 超时预计: 100毫秒内的 continue 响应 默认为 1000 毫秒。 | cURL 7.36.0 中添加,自 PHP 7.0.7 有效。 |
| **`CURLOPT_FTPSSLAUTH`** | FTP验证方式(启用的时候):*CURLFTPAUTH\_SSL*(首先尝试SSL),*CURLFTPAUTH\_TLS*(首先尝试TLS)或*CURLFTPAUTH\_DEFAULT*(让cURL 自个儿决定)。 | 在 cURL 7.12.2 中被加入。 |
| **`CURLOPT_HEADEROPT`** | How to deal with headers. One of the following constants: **`CURLHEADER_UNIFIED`** : the headers specified in **`CURLOPT_HTTPHEADER`** will be used in requests both to servers and proxies. With this option enabled, **`CURLOPT_PROXYHEADER`** will not have any effect. **`CURLHEADER_SEPARATE`** : makes **`CURLOPT_HTTPHEADER`** headers only get sent to a server and not to a proxy. Proxy headers must be set with **`CURLOPT_PROXYHEADER`** to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send **`CURLOPT_PROXYHEADER`** headers only to the proxy and then **`CURLOPT_HTTPHEADER`** headers only to the server.Defaults to **`CURLHEADER_SEPARATE`** as of cURL 7.42.1, and **`CURLHEADER_UNIFIED`** before. | Added in cURL 7.37.0. Available since PHP 7.0.7. |
| **`CURLOPT_HTTP_VERSION`** | `CURL_HTTP_VERSION_NONE`(默认值,让 cURL 自己判断使用哪个版本),`CURL_HTTP_VERSION_1_0`(强制使用 HTTP/1.0)或`CURL_HTTP_VERSION_1_1`(强制使用 HTTP/1.1)。 | |
| **`CURLOPT_HTTPAUTH`** | 使用的 HTTP 验证方法。选项有:`CURLAUTH_BASIC`、`CURLAUTH_DIGEST`、`CURLAUTH_GSSNEGOTIATE`、`CURLAUTH_NTLM`、`CURLAUTH_ANY`和`CURLAUTH_ANYSAFE`。<br>可以使用\|*位域(OR)操作符结合多个值,cURL 会让服务器选择受支持的方法,并选择最好的那个。<br>`CURLAUTH_ANY`是*CURLAUTH\_BASIC \| CURLAUTH\_DIGEST \| CURLAUTH\_GSSNEGOTIATE \| CURLAUTH\_NTLM*的别名。<br>`CURLAUTH_ANYSAFE`是*CURLAUTH\_DIGEST \| CURLAUTH\_GSSNEGOTIATE \| CURLAUTH\_NTLM*的别名。 | |
| **`CURLOPT_INFILESIZE`** | 希望传给远程站点的文件尺寸,字节(byte)为单位。 注意无法用这个选项阻止 libcurl 发送更多的数据,确切发送什么取决于 **`CURLOPT_READFUNCTION`** 。 | |
| **`CURLOPT_LOW_SPEED_LIMIT`** | 传输速度,每秒字节(bytes)数,根据 **`CURLOPT_LOW_SPEED_TIME`** 秒数统计是否因太慢而取消传输。 | |
| **`CURLOPT_LOW_SPEED_TIME`** | 当传输速度小于 **`CURLOPT_LOW_SPEED_LIMIT`** 时(bytes/sec),PHP会判断是否因太慢而取消传输。 | |
| **`CURLOPT_MAXCONNECTS`** | 允许的最大连接数量。达到限制时,会通过 **`CURLOPT_CLOSEPOLICY`** 决定应该关闭哪些连接。 | |
| **`CURLOPT_MAXREDIRS`** | 指定最多的 HTTP 重定向次数,这个选项是和 **`CURLOPT_FOLLOWLOCATION`** 一起使用的。 | |
| **`CURLOPT_PORT`** | 用来指定连接端口。 | |
| **`CURLOPT_POSTREDIR`** | 位掩码, 1 (301 永久重定向), 2 (302 Found) 和 4 (303 See Other) 设置 **`CURLOPT_FOLLOWLOCATION`** 时,什么情况下需要再次 HTTP POST 到重定向网址。 | cURL 7.19.1 中添加,PHP 5.3.2 开始可用。 |
| **`CURLOPT_PROTOCOLS`** | **`CURLPROTO_*`** 的位掩码。 启用时,会限制 libcurl 在传输过程中可使用哪些协议。 这将允许你在编译libcurl时支持众多协议,但是限制只用允许的子集。默认 libcurl 将使用所有支持的协议。 参见 **`CURLOPT_REDIR_PROTOCOLS`** 。<br>可用的协议选项为:`CURLPROTO_HTTP`、`CURLPROTO_HTTPS`、`CURLPROTO_FTP`、`CURLPROTO_FTPS`、`CURLPROTO_SCP`、`CURLPROTO_SFTP`、`CURLPROTO_TELNET`、`CURLPROTO_LDAP`、`CURLPROTO_LDAPS`、`CURLPROTO_DICT`、`CURLPROTO_FILE`、`CURLPROTO_TFTP`、`CURLPROTO_ALL`。 | 在 cURL 7.19.4 中被加入。 |
| **`CURLOPT_PROXYAUTH`** | HTTP 代理连接的验证方式。使用在 **`CURLOPT_HTTPAUTH`** 中的位掩码。 当前仅仅支持`CURLAUTH_BASIC`和`CURLAUTH_NTLM`。 | 在 cURL 7.10.7 中被加入。 |
| **`CURLOPT_PROXYPORT`** | 代理服务器的端口。端口也可以在 **`CURLOPT_PROXY`** 中设置。 | |
| **`CURLOPT_PROXYTYPE`** | 可以是 **`CURLPROXY_HTTP`** (默认值) **`CURLPROXY_SOCKS4`** 、 **`CURLPROXY_SOCKS5`** 、 **`CURLPROXY_SOCKS4A`** 或 **`CURLPROXY_SOCKS5_HOSTNAME`** 。 | 在 cURL 7.10 中被加入。 |
| **`CURLOPT_REDIR_PROTOCOLS`** | **`CURLPROTO_*`** 值的位掩码。如果被启用,位掩码会限制 libcurl 在 **`CURLOPT_FOLLOWLOCATION`** 开启时,使用的协议。 默认允许除 FILE 和 SCP 外所有协议。 这和 7.19.4 前的版本无条件支持所有支持的协议不同。关于协议常量,请参照 **`CURLOPT_PROTOCOLS`** 。 | 在 cURL 7.19.4 中被加入。 |
| **`CURLOPT_RESUME_FROM`** | 在恢复传输时,传递字节为单位的偏移量(用来断点续传)。 | |
| **`CURLOPT_SSL_OPTIONS`** | Set SSL behavior options, which is a bitmask of any of the following constants: **`CURLSSLOPT_ALLOW_BEAST`** : do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. **`CURLSSLOPT_NO_REVOKE`** : disable certificate revocation checks for those SSL backends where such behavior is present. | Added in cURL 7.25.0. Available since PHP 7.0.7. |
| <span style="color:red">**`CURLOPT_SSL_VERIFYHOST`**</span> | 设置为*1*是检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。 设置成 2,会检查公用名是否存在,并且是否与提供的主机名匹配。*0*为不检查名称。 在生产环境中,这个值应该是*2*(默认值)。 | 值*1*的支持在 cURL 7.28.1 中被删除了。 |
| <span style="color:red">**`CURLOPT_SSLVERSION`** </span> | **`CURL_SSLVERSION_DEFAULT`** (0), **`CURL_SSLVERSION_TLSv1`** (1), **`CURL_SSLVERSION_SSLv2`** (2), **`CURL_SSLVERSION_SSLv3`** (3), **`CURL_SSLVERSION_TLSv1_0`** (4), **`CURL_SSLVERSION_TLSv1_1`** (5) , **`CURL_SSLVERSION_TLSv1_2`** (6) 中的其中一个<br>注意: 你最好别设置这个值,让它使用默认值。 设置为 2 或 3 比较危险,在 SSLv2 和 SSLv3 中有弱点存在。 | |
| **`CURLOPT_STREAM_WEIGHT`** | 设置 stream weight 数值 ( 1 和 256 之间的数字). | cURL 7.46.0 中添加,自 PHP 7.0.7 起有效。 |
| **`CURLOPT_TIMECONDITION`** | 设置如何对待 **`CURLOPT_TIMEVALUE`** 。 使用`CURL_TIMECOND_IFMODSINCE`,仅在页面 **`CURLOPT_TIMEVALUE`** 之后修改,才返回页面。没有修改则返回*"304 Not Modified"*头,假设设置了 **`CURLOPT_HEADER`** 为 **`TRUE`** 。`CURL_TIMECOND_IFUNMODSINCE`则起相反的效果。 默认为`CURL_TIMECOND_IFMODSINCE`。 | |
| <span style="color:red">**`CURLOPT_TIMEOUT`**</span> | 允许 cURL 函数执行的最长秒数。 | |
| **`CURLOPT_TIMEOUT_MS`** | 设置cURL允许执行的最长毫秒数。 如果 libcurl 编译时使用系统标准的名称解析器( standard system name resolver),那部分的连接仍旧使用以秒计的超时解决方案,最小超时时间还是一秒钟。 | 在 cURL 7.16.2 中被加入。从 PHP 5.2.3 起可使用。 |
| **`CURLOPT_TIMEVALUE`** | 秒数,从 1970年1月1日开始。这个时间会被 **`CURLOPT_TIMECONDITION`** 使。默认使用`CURL_TIMECOND_IFMODSINCE`。 | |
| **`CURLOPT_MAX_RECV_SPEED_LARGE`** | 如果下载速度超过了此速度(以每秒字节数来统计) ,即传输过程中累计的平均数,传输就会降速到这个参数的值。默认不限速。 | cURL 7.15.5 中添加, PHP 5.4.0 有效。 |
| **`CURLOPT_MAX_SEND_SPEED_LARGE`** | 如果上传的速度超过了此速度(以每秒字节数来统计),即传输过程中累计的平均数 ,传输就会降速到这个参数的值。默认不限速。 | cURL 7.15.5 中添加, PHP 5.4.0 有效。 |
| **`CURLOPT_SSH_AUTH_TYPES`** | A bitmask consisting of one or more of **`CURLSSH_AUTH_PUBLICKEY`** , **`CURLSSH_AUTH_PASSWORD`** , **`CURLSSH_AUTH_HOST`** , **`CURLSSH_AUTH_KEYBOARD`** . Set to **`CURLSSH_AUTH_ANY`** to let libcurl pick one. | cURL 7.16.1 中添加。 |
| **`CURLOPT_IPRESOLVE`** | 允许程序选择想要解析的 IP 地址类别。只有在地址有多种 ip 类别的时候才能用,可以的值有: **`CURL_IPRESOLVE_WHATEVER`** 、 **`CURL_IPRESOLVE_V4`** 、 **`CURL_IPRESOLVE_V6`** ,默认是 **`CURL_IPRESOLVE_WHATEVER`** 。 | cURL 7.10.8 中添加。 |
| **`CURLOPT_FTP_FILEMETHOD`** | 告诉 curl 使用哪种方式来获取 FTP(s) 服务器上的文件。可能的值有: **`CURLFTPMETHOD_MULTICWD`** 、 **`CURLFTPMETHOD_NOCWD`** 和 **`CURLFTPMETHOD_SINGLECWD`** 。 | cURL 7.15.1 中添加, PHP 5.3.0 起有效。 |
>[info]对于下面的这些`option`,`value`应该被设置成string:
| 选项 | 设置的`value` | 备注 |
| --- | --- | --- |
| **`CURLOPT_CAINFO`** | 一个保存着1个或多个用来让服务端验证的证书的文件名。这个参数仅仅在和 **`CURLOPT_SSL_VERIFYPEER`** 一起使用时才有意义。 . | 可能需要绝对路径。 |
| **`CURLOPT_CAPATH`** | 一个保存着多个CA证书的目录。这个选项是和 **`CURLOPT_SSL_VERIFYPEER`** 一起使用的。 | |
| **`CURLOPT_COOKIE`** | 设定 HTTP 请求中*"Cookie: "*部分的内容。多个 cookie 用分号分隔,分号后带一个空格(例如, "*fruit=apple; colour=red*")。 | |
| **`CURLOPT_COOKIEFILE`** | 包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件。如果文件名是空的,不会加载 cookie,但 cookie 的处理仍旧启用。 | |
| **`CURLOPT_COOKIEJAR`** | 连接结束后,比如,调用 curl\_close 后,保存 cookie 信息的文件。 | |
| **`CURLOPT_CUSTOMREQUEST`** |
HTTP 请求时,使用自定义的 Method 来代替*"GET"*或*"HEAD"*。对*"DELETE"*或者其他更隐蔽的 HTTP 请求有用。 有效值如*"GET"*,*"POST"*,*"CONNECT"*等等;也就是说,不要在这里输入整行 HTTP 请求。例如输入*"GET /index.html HTTP/1.0\\r\\n\\r\\n"*是不正确的。<br>注意:不确定服务器支持这个自定义方法则不要使用它。 | |
| **`CURLOPT_DEFAULT_PROTOCOL`** | URL不带协议的时候,使用的默认协议。 | cURL 7.45.0 中添加,自 PHP 7.0.7 起有效。 |
| **`CURLOPT_DNS_INTERFACE`** | Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).| Added in cURL 7.33.0. Available since PHP 7.0.7. |
| **`CURLOPT_DNS_LOCAL_IP4`** | Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.| Added in cURL 7.33.0. Available since PHP 7.0.7. |
| **`CURLOPT_DNS_LOCAL_IP6`** | Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string. | Added in cURL 7.33.0. Available since PHP 7.0.7. |
| **`CURLOPT_EGDSOCKET`** | 类似 **`CURLOPT_RANDOM_FILE`** ,除了一个Entropy Gathering Daemon套接字。 | |
| **`CURLOPT_ENCODING`** | HTTP请求头中*"Accept-Encoding: "*的值。 这使得能够解码响应的内容。 支持的编码有*"identity"*,*"deflate"*和*"gzip"*。如果为空字符串*""*,会发送所有支持的编码类型。 | 在 cURL 7.10 中被加入。 |
| **`CURLOPT_FTPPORT`** | 这个值将被用来获取供FTP"PORT"指令所需要的IP地址。 "PORT" 指令告诉远程服务器连接到我们指定的IP地址。这个字符串可以是纯文本的IP地址、主机名、一个网络接口名(UNIX下)或者只是一个'-'来使用默认的 IP 地址。 | |
| **`CURLOPT_INTERFACE`** | 发送的网络接口(interface),可以是一个接口名、IP 地址或者是一个主机名。 | |
| **`CURLOPT_KEYPASSWD`** | 使用 **`CURLOPT_SSLKEY`** 或 **`CURLOPT_SSH_PRIVATE_KEYFILE`** 私钥时候的密码。 | 在 cURL 7.16.1 中添加。 |
| **`CURLOPT_KRB4LEVEL`** | KRB4 (Kerberos 4) 安全级别。下面的任何值都是有效的(从低到高的顺序):*"clear"*、*"safe"*、*"confidential"*、*"private".*。如果字符串以上这些,将使用*"private"*。 这个选项设置为 **`NULL`** 时将禁用 KRB4 安全认证。目前 KRB4 安全认证只能用于 FTP 传输。 | |
| **`CURLOPT_LOGIN_OPTIONS`** | Can be used to set protocol specific login options, such as the preferred authentication mechanism via "AUTH=NTLM" or "AUTH=\*", and should be used in conjunction with the **`CURLOPT_USERNAME`** option. | Added in cURL 7.34.0. Available since PHP 7.0.7. |
| **`CURLOPT_PINNEDPUBLICKEY`** | Set the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";". | Added in cURL 7.39.0. Available since PHP 7.0.7. |
| <span style="color:red">**`CURLOPT_POSTFIELDS`** </span> | 全部数据使用HTTP协议中的 "POST" 操作来发送(即发送post参数以及文件等)。 要发送文件,在文件名前面加上*@*前缀并使用完整路径。 文件类型可在文件名后以 '*;type=mimetype*' 的格式指定。 这个参数可以是 urlencoded 后的字符串,类似'*para1=val1¶2=val2&...*',也可以使用一个以字段名为键值,字段数据为值的数组。 如果`value`是一个数组,**Content-Type头将会被设置成Content-Type:multipart/form-data(正常情况应该是:Content-Type: application/x-www-form-urlencoded)**所以在某些场景下需要用**CURLOPT\_HTTPHEADER**来修改它。从 PHP 5.2.0 开始,使用*@*前缀传递文件时,`value`必须是个数组。从 PHP 5.5.0 开始,*@*前缀已被废弃,文件可通过[CURLFile](https://www.php.net/manual/zh/class.curlfile.php)发送。 设置 **`CURLOPT_SAFE_UPLOAD`** 为 **`TRUE`** 可禁用*@*前缀发送文件,以增加安全性。 | |
| **`CURLOPT_PRIVATE`** | Any data that should be associated with this cURL handle. This data can subsequently be retrieved with the **`CURLINFO_PRIVATE`** option of[curl\_getinfo()](https://www.php.net/manual/zh/function.curl-getinfo.php). cURL does nothing with this data. When using a cURL multi handle, this private data is typically a unique key to identify a standard cURL handle. | Added in cURL 7.10.3. |
| **`CURLOPT_PROXY`** | HTTP 代理通道。 | |
| **`CURLOPT_PROXY_SERVICE_NAME`** | 代理验证服务的名称。 | cURL 7.34.0 中添加,PHP 7.0.7 起有效。 |
| **`CURLOPT_PROXYUSERPWD`** | 一个用来连接到代理的*"\[username\]:\[password\]"*格式的字符串。 | |
| **`CURLOPT_RANDOM_FILE`** | 一个被用来生成 SSL 随机数种子的文件名。 | |
| **`CURLOPT_RANGE`** | 以*"X-Y"*的形式,其中X和Y都是可选项获取数据的范围,以字节计。HTTP传输线程也支持几个这样的重复项中间用逗号分隔如*"X-Y,N-M"*。 | |
| **`CURLOPT_REFERER`** | 在HTTP请求头中*"Referer: "*的内容。 | |
| **`CURLOPT_SERVICE_NAME`** | 验证服务的名称 | cURL 7.43.0 起添加,自 PHP 7.0.7 有效。 |
| **`CURLOPT_SSH_HOST_PUBLIC_KEY_MD5`** | 包含 32 位长的 16 进制数值。这个字符串应该是远程主机公钥(public key) 的 MD5 校验值。在不匹配的时候 libcurl 会拒绝连接。 此选项仅用于 SCP 和 SFTP 的传输。 | cURL 7.17.1 中添加。 |
| **`CURLOPT_SSH_PUBLIC_KEYFILE`** | The file name for your public key. If not used, libcurl defaults to $HOME/.ssh/id\_dsa.pub if the HOME environment variable is set, and just "id\_dsa.pub" in the current directory if HOME is not set. | Added in cURL 7.16.1. |
| **`CURLOPT_SSH_PRIVATE_KEYFILE`** | The file name for your private key. If not used, libcurl defaults to $HOME/.ssh/id\_dsa if the HOME environment variable is set, and just "id\_dsa" in the current directory if HOME is not set. If the file is password-protected, set the password with **`CURLOPT_KEYPASSWD`** . | Added in cURL 7.16.1. |
| **`CURLOPT_SSL_CIPHER_LIST`** | 一个SSL的加密算法列表。例如*RC4-SHA*和*TLSv1*都是可用的加密列表。 | |
| **`CURLOPT_SSLCERT`** | 一个包含 PEM 格式证书的文件名。 | |
| **`CURLOPT_SSLCERTPASSWD`** | 使用 **`CURLOPT_SSLCERT`** 证书需要的密码。 | |
| **`CURLOPT_SSLCERTTYPE`** | 证书的类型。支持的格式有*"PEM"*(默认值),*"DER"*和*"ENG"*。 | 在 cURL 7.9.3中 被加入。 |
| **`CURLOPT_SSLENGINE`** | 用来在 **`CURLOPT_SSLKEY`** 中指定的SSL私钥的加密引擎变量。 | |
| **`CURLOPT_SSLENGINE_DEFAULT`** | 用来做非对称加密操作的变量。 | |
| **`CURLOPT_SSLKEY`** | 包含 SSL 私钥的文件名。 | |
| **`CURLOPT_SSLKEYPASSWD`** | 在 **`CURLOPT_SSLKEY`** 中指定了的SSL私钥的密码。<br>注意: 由于这个选项包含了敏感的密码信息,记得保证这个PHP脚本的安全。 | |
| **`CURLOPT_SSLKEYTYPE`** | **`CURLOPT_SSLKEY`** 中规定的私钥的加密类型,支持的密钥类型为*"PEM"*(默认值)、*"DER"*和*"ENG"*。 | |
| **`CURLOPT_UNIX_SOCKET_PATH`** | 使用 Unix 套接字作为连接,并用指定的[string](https://www.php.net/manual/zh/language.types.string.php)作为路径。 | cURL 7.40.0 中添加, PHP 7.0.7 起有效。 |
| <span style="color:red">**`CURLOPT_URL`**</span> | 需要获取的 URL 地址,也可以在[curl\_init()](https://www.php.net/manual/zh/function.curl-init.php)初始化会话的时候。 | |
| <span style="color:blue">**`CURLOPT_USERAGENT`**</span> | 在HTTP请求中包含一个 *"User-Agent: "* 头的字符串。 | 例:`curl_setopt($curl, CURLOPT_USERAGENT,'Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15');` |
| **`CURLOPT_USERNAME`** | 验证中使用的用户名。 | cURL 7.19.1 中添加,PHP 5.5.0 起有效。 |
| **`CURLOPT_USERPWD`** | 传递一个连接中需要的用户名和密码,格式为:*"\[username\]:\[password\]"*。 | |
| **`CURLOPT_XOAUTH2_BEARER`** | 指定 OAuth 2.0 access token。 | cURL 7.33.0 中添加,自 PHP 7.0.7 添加。 |
>[info]以下`option`,`value`应该被设置成数组:
| 选项 | 可选`value`值 | 备注 |
| --- | --- | --- |
| **`CURLOPT_CONNECT_TO`** | 连接到指定的主机和端口,替换 URL 中的主机和端口。接受指定字符串格式的数组:*HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT*。 | cURL 7.49.0 中添加, PHP 7.0.7 起有效。 |
| **`CURLOPT_HTTP200ALIASES`** | HTTP 200 响应码数组,数组中的响应码被认为是正确的响应,而非错误。 | 在 cURL 7.10.3 中被加入。 |
| <span style="color:blue">**`CURLOPT_HTTPHEADER`**</span> | 设置 HTTP 头字段的数组。格式:`array('Content-type: text/plain', 'Content-length: 100')` |`curl_setopt($curl, CURLOPT_HTTPHEADER,array('User-Agent: Opera/9.80 (Windows NT 6.2; Win64; x64) Presto/2.12.388 Version/12.15','Referer: http://someaddress.tld','Content-Type: multipart/form-data'));` |
| **`CURLOPT_POSTQUOTE`** | 在 FTP 请求执行完成后,在服务器上执行的一组array格式的 FTP 命令。 | |
| **`CURLOPT_PROXYHEADER`** | 传给代理的自定义 HTTP 头。 | cURL 7.37.0 中添加,自 PHP 7.0.7 添加。 |
| **`CURLOPT_QUOTE`** | 一组先于 FTP 请求的在服务器上执行的FTP命令。 | |
| **`CURLOPT_RESOLVE`** | 提供自定义地址,指定了主机和端口。 包含主机、端口和 ip 地址的字符串,组成 array 的,每个元素以冒号分隔。格式:`array("example.com:80:127.0.0.1")` | 在 cURL 7.21.3 中添加,自 PHP 5.5.0 起可用。 |
>[info]以下`option`,`value`应该被设置成流资源 (例如使用fopen()):
| 选项 | 可选`value`值 |
| --- | --- |
| **`CURLOPT_FILE`** | 设置输出文件,默认为*STDOUT*(浏览器)。 |
| **`CURLOPT_INFILE`** | 上传文件时需要读取的文件。 |
| **`CURLOPT_STDERR`** | 错误输出的地址,取代默认的*STDERR*。 |
| **`CURLOPT_WRITEHEADER`** | 设置 header 部分内容的写入的文件地址。 |
>[info]以下`option`的`value`应该是有效的函数或者闭包:
| 选项 | `value`值 |
| --- | --- |
| **`CURLOPT_HEADERFUNCTION`** | 设置一个回调函数,这个函数有两个参数,第一个是cURL的资源句柄,第二个是输出的 header 数据。header数据的输出必须依赖这个函数,返回已写入的数据大小。 |
| **`CURLOPT_PASSWDFUNCTION`** | 设置一个回调函数,有三个参数,第一个是cURL的资源句柄,第二个是一个密码提示符,第三个参数是密码长度允许的最大值。返回密码的值。 |
| **`CURLOPT_PROGRESSFUNCTION`** | 设置一个回调函数,有五个参数,第一个是cURL的资源句柄,第二个是预计要下载的总字节(bytes)数。第三个是目前下载的字节数,第四个是预计传输中总上传字节数,第五个是目前上传的字节数。<br>注意:只有设置 **`CURLOPT_NOPROGRESS`** 选项为 **`FALSE`** 时才会调用这个回调函数。<br>返回非零值将中断传输。 传输将设置 **`CURLE_ABORTED_BY_CALLBACK`** 错误。|
| **`CURLOPT_READFUNCTION`** | 回调函数名。该函数应接受三个参数。第一个是 cURL resource;第二个是通过选项 **`CURLOPT_INFILE`** 传给 cURL 的 stream resource;第三个参数是最大可以读取的数据的数量。回 调函数必须返回一个字符串,长度小于或等于请求的数据量(第三个参数)。一般从传入的 stream resource 读取。返回空字符串作为*EOF*(文件结束) 信号。 |
| **`CURLOPT_WRITEFUNCTION`** | 回调函数名。该函数应接受两个参数。第一个是 cURL resource;第二个是要写入的数据字符串。数 据必须在函数中被保存。 函数必须准确返回写入数据的字节数,否则传输会被一个错误所中 断。 |
>[info]其他值:
| Option | 设置`value`为 |
| --- | --- |
| **`CURLOPT_SHARE`** | [curl\_share\_init()](https://www.php.net/manual/zh/function.curl-share-init.php)返回的结果。 使 cURL 可以处理共享句柄里的数据。 |
## **更新日志**
| 版本 | 说明 |
| --- | --- |
| 7.0.7 | 引入 **`CURL_HTTP_VERSION_2`** 、 **`CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE`** 、 **`CURL_HTTP_VERSION_2TLS`** 、 **`CURL_REDIR_POST_301`** 、 **`CURL_REDIR_POST_302`** 、 **`CURL_REDIR_POST_303`** 、 **`CURL_REDIR_POST_ALL`** 、 **`CURL_VERSION_KERBEROS5`** 、 **`CURL_VERSION_PSL`** 、 **`CURL_VERSION_UNIX_SOCKETS`** 、 **`CURLAUTH_NEGOTIATE`** 、 **`CURLAUTH_NTLM_WB`** 、 **`CURLFTP_CREATE_DIR`** 、 **`CURLFTP_CREATE_DIR_NONE`** 、 **`CURLFTP_CREATE_DIR_RETRY`** 、 **`CURLHEADER_SEPARATE`** 、 **`CURLHEADER_UNIFIED`** 、 **`CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE`** 、 **`CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE`** 、 **`CURLMOPT_MAX_HOST_CONNECTIONS`** 、 **`CURLMOPT_MAX_PIPELINE_LENGTH`** 、 **`CURLMOPT_MAX_TOTAL_CONNECTIONS`** 、 **`CURLOPT_CONNECT_TO`** 、 **`CURLOPT_DEFAULT_PROTOCOL`** 、 **`CURLOPT_DNS_INTERFACE`** 、 **`CURLOPT_DNS_LOCAL_IP4`** 、 **`CURLOPT_DNS_LOCAL_IP6`** 、 **`CURLOPT_EXPECT_100_TIMEOUT_MS`** 、 **`CURLOPT_HEADEROPT`** 、 **`CURLOPT_LOGIN_OPTIONS`** 、 **`CURLOPT_PATH_AS_IS`** 、 **`CURLOPT_PINNEDPUBLICKEY`** 、 **`CURLOPT_PIPEWAIT`** 、 **`CURLOPT_PROXY_SERVICE_NAME`** 、 **`CURLOPT_PROXYHEADER`** 、 **`CURLOPT_SASL_IR`** 、 **`CURLOPT_SERVICE_NAME`** 、 **`CURLOPT_SSL_ENABLE_ALPN`** 、 **`CURLOPT_SSL_ENABLE_NPN`** 、 **`CURLOPT_SSL_FALSESTART`** 、 **`CURLOPT_SSL_VERIFYSTATUS`** 、 **`CURLOPT_STREAM_WEIGHT`** 、 **`CURLOPT_TCP_FASTOPEN`** 、 **`CURLOPT_TFTP_NO_OPTIONS`** 、 **`CURLOPT_UNIX_SOCKET_PATH`** 、 **`CURLOPT_XOAUTH2_BEARER`** 、 **`CURLPROTO_SMB`** 、 **`CURLPROTO_SMBS`** 、 **`CURLPROXY_HTTP_1_0`** 、 **`CURLSSH_AUTH_AGENT`** 和 **`CURLSSLOPT_NO_REVOKE`** 。 |
| 7.0.0 | 禁用 **`CURLOPT_SAFE_UPLOAD`** 的选项已被删掉了。 所有的 curl 文件的上传都必须使用[CURLFile](https://www.php.net/manual/zh/class.curlfile.php)。 |
| 5.6.0 | 默认 **`CURLOPT_SAFE_UPLOAD`** 为 **`TRUE`** 。 |
| 5.6.0 | 移出 **`CURLOPT_CLOSEPOLICY`** 和相关的值。 |
| 5.5.0 | 添加 cURL 资源作为 **`CURLOPT_PROGRESSFUNCTION`** 回调函数的第一个参数。 |
| 5.5.0 | 引入 **`CURLOPT_SHARE`** 。 |
| 5.3.0 | 引入 **`CURLOPT_PROGRESSFUNCTION`** 。 |
| 5.2.10 | 引入 **`CURLOPT_PROTOCOLS`** , and **`CURLOPT_REDIR_PROTOCOLS`** . |
| 5.2.4 | 引入了 **`CURLOPT_PRIVATE`** 。 |
| 5.1.0 | 引入 **`CURLOPT_AUTOREFERER`** , **`CURLOPT_BINARYTRANSFER`** , **`CURLOPT_FTPSSLAUTH`** , **`CURLOPT_PROXYAUTH`** , and **`CURLOPT_TIMECONDITION`** . |
| 5.0.0 | 引入 **`CURLOPT_FTP_USE_EPRT`** , **`CURLOPT_NOSIGNAL`** , **`CURLOPT_UNRESTRICTED_AUTH`** , **`CURLOPT_BUFFERSIZE`** , **`CURLOPT_HTTPAUTH`** , **`CURLOPT_PROXYPORT`** , **`CURLOPT_PROXYTYPE`** , **`CURLOPT_SSLCERTTYPE`** , and **`CURLOPT_HTTP200ALIASES`** . |
- php更新内容
- PHP PSR 标准规范
- 辅助查询(*)
- composer项目的创建
- composer安装及设置
- composer自动加载讲解
- phpsdudy的composer操作
- git
- Git代码同时上传到GitHub和Gitee(码云)
- Git - 多人协同开发利器,团队协作流程规范与注意事项
- 删除远程仓库的文件
- github查询方法
- 错误
- 其他
- php.ini
- php配置可修改范围
- php超时
- 防跨目录设置
- 函数可变参数
- 【时间】操作
- 时间函数例子
- Date/Time 函数(不包含别名函数)
- DateTime类别名函数
- 【数字】操作
- 【字符串】操作
- 【数组】操作
- 排序
- 合并案例
- empty、isset、is_null
- echo 输出bool值
- if真假情况
- 流程控制代替语法【if (条件): endif;】
- 三元运算
- 运算符优先级
- 常量
- define与const(php5.3) 类常量
- 递归
- 单元测试
- 面向对象
- 对象(object) 与 数组(array) 的转换
- php网络相关
- 支持的协议和封装协议(如http,php://input)
- php://协议
- file://协议
- http(s)://协议
- ftp(s)://协议
- zip://, bzip2://, zlib://协议
- data://协议
- glob://协议
- expect://协议
- phar://
- ssh2
- rar://
- ogg://
- 上下文(Context)选项和参数
- 过滤器
- http请求及模拟登录
- 常用的header头部定义汇总
- HTTP响应头和请求头信息对照表
- HTTP请求的返回值含义说明
- content-type对照表
- Cache-Control对照
- curl函数
- 防止页面刷新
- telnet模拟get、post请求
- 三种方式模拟表单发布留言
- 模拟登陆
- 防盗链
- php+mysql模拟队列发送邮件
- socket
- 使用websocket实现php消息实时推送完整示例
- streams
- Stream函数实现websocket
- swoole
- 网络编程基本概念
- 全局变量域超全局变量
- 超全局变量
- $_ENV :存储了一些系统的环境变量
- $_COOKIE
- $_SESSION
- $_FILES
- $_SERVER
- 正则
- php正则函数
- 去除文本中的html、xml的标签
- 特殊符号
- \r\n
- 模式修正符
- 分组
- 断言(环视?)
- 条件表达式
- 递归表达式 (?R)
- 固化分组
- 正则例子
- 提取类文件的公共方法
- 抓取网页内容
- 匹配中文字符
- 提取sql日志文件
- 框架
- 文件操作
- 自动加载spl_autoload_register
- 文件加载
- 文件的上传下载
- 常见的mimi类型
- 文件断点续传
- 下载文件防盗链
- 破解防盗链
- 将字节转为人可读的单位
- 无限分类
- 短信验证码
- 短信宝
- 视频分段加载
- 隐藏地址
- MPEG DASH视频分片技术
- phpDoc注释
- @错误抑制符
- 字符编码
- PHP CLI模式开发
- CGI、FastCGI和PHP-FPM关系图解
- No input file specified的解决方法
- SAPI(PHP常见的四种运行模式)
- assert断言
- 轮询(Event Loop)
- 异常处理
- 异常分类
- php系统异常
- 错误级别
- set_error_handler
- set_exception_handler
- register_shutdown_function
- try catch
- tp5异常处理类解析
- 文件上传相关设置
- 进程/线程/协程
- 协程
- 什么是协程
- 引用&
- Heredoc和Nowdoc语法
- 类基础
- 系统预定义类
- pdo
- 类的三大特性:封装,继承,多态
- 魔术方法
- extends继承
- abstract 抽象类
- interface 接口(需要implements实现)
- 抽象类和接口的区别
- 多态
- static
- final
- serialize与unserialize
- instanceof 判断后代子类
- 类型约束
- clone克隆
- ::的用法
- static::class、self::class
- new self()与new static()
- this、self、static、parent、super
- self、static、parent:后期静态绑定
- PHP的静态变量
- php导入
- trait
- 动态调用类方法
- 参数及类型申明
- 方法的重载覆盖
- return $a && $b
- 类型声明
- 设计思想
- 依赖注入与依赖倒置
- MVC模式与模板引擎
- 模版引擎
- smarty模版
- 系统变量、全局变量
- 语言切换
- 函数-给函数默认值
- 流程控制-遍历
- 模版加载
- 模版继承
- blade
- twig
- Plates
- 创建型模式(创建类对象)--单原二厂建
- (*)单例模式(保证一个类仅有一个实例)
- (*)工厂模式(自动实例化想要的类)
- 原型模式(在指定方法里克隆this)
- 创建者模式(建造者类组装近似类属性)
- 结构型模式 --桥(帮)组享外带装适
- 适配器模式(Adapter 用于接口兼容)
- 桥接模式(方法相同的不同类之间的快速切换)
- 装饰模式(动态增加类对象的功能 如游戏角色的装备)
- 组合模式(用于生成类似DOMDocument这种节点类)
- 外观模式(门面(Facade)模式 不同类的统一调用)
- 享元模式
- 代理模式
- 行为型模式--观摩职命状-备爹在房中洁厕
- (*)观察者模式
- (*)迭代器模式(Iterator)
- 模板方法模式 Template
- 命令模式(Command)
- 中介者模式(Mediator)
- 状态模式(State)
- 职责链模式 (Chainof Responsibility)
- 策略模式(Strategy)
- 已知模式-备忘录模式(Memento)
- 深度模式-解释器模式(Interpreter)
- 深度模式-访问者模式(Visitor)
- (*)注册树(注射器、注册表)模式
- PHP扩展库列表
- 函数参考
- 影响 PHP 行为的扩展
- APC扩展(过时)
- APCu扩展
- APD扩展(过时)
- bcompiler扩展(过时)
- BLENC扩展 (代码加密 实验型)
- Componere扩展(7.1+)
- Componere\Definition
- Componere\Patch
- Componere \ Method
- Componere\Value
- Componere函数
- 错误处理扩展(PHP 核心)
- FFI扩展
- 基本FFI用法
- FFI api
- htscanner扩展
- inclued扩展
- Memtrack扩展
- OPcache扩展(5.5.0内部集成)
- Output Control扩展(核心)
- PHP Options/Info扩展(核心)
- 选项、 信息函数
- phpdbg扩展(5.6+内部集成)
- runkit扩展
- runkit7扩展
- scream扩展
- uopz扩展
- Weakref扩展
- WeakRef
- WeakMap
- WinCache扩展
- Xhprof扩展
- Yac(7.0+)
- 音频格式操作
- ID3
- KTaglib
- oggvorbis
- OpenAL
- 身份认证服务
- KADM5
- Radius
- 针对命令行的扩展
- Ncurses(暂无人维护)
- Newt(暂无人维护)
- Readline
- 压缩与归档扩展
- Bzip2
- LZF
- Phar
- Rar
- Zip
- Zlib
- 信用卡处理
- 加密扩展
- Crack(停止维护)
- CSPRNG(核心)
- Hash扩展(4.2内置默认开启、7.4核心)
- Mcrypt(7.2移除)
- Mhash(过时)
- OpenSSL(*)
- 密码散列算法(核心)
- Sodium(+)
- 数据库扩展
- 数据库抽象层
- DBA
- dbx
- ODBC
- PDO(*)
- 针对各数据库系统对应的扩展
- CUBRID
- DB++(实验性)
- dBase
- filePro
- Firebird/InterBase
- FrontBase
- IBM DB2
- Informix
- Ingres
- MaxDB
- Mongo(MongoDB老版本)
- MongoDB
- mSQL
- Mssql
- MySQL
- OCI8(Oracle OCI8)
- Paradox
- PostgreSQL
- SQLite
- SQLite3
- SQLSRV(SQL Server)
- Sybase
- tokyo_tyrant
- 日期与时间相关扩展
- Calendar
- 日期/时间(核心)
- HRTime(*)
- 文件系统相关扩展
- Direct IO
- 目录(核心)
- Fileinfo(内置)
- 文件系统(核心)
- Inotify
- Mimetype(过时)
- Phdfs
- Proctitle
- xattr
- xdiff
- 国际化与字符编码支持
- Enchant
- FriBiDi
- Gender
- Gettext
- iconv(内置默认开启)
- intl
- 多字节字符串(mbstring)
- Pspell
- Recode(将要过时)
- 图像生成和处理
- Cairo
- Exif
- GD(内置)
- Gmagick
- ImageMagick
- 邮件相关扩展
- Cyrus
- IMAP
- Mail(核心)
- Mailparse
- vpopmail(实验性 )
- 数学扩展
- BC Math
- GMP
- Lapack
- Math(核心)
- Statistics
- Trader
- 非文本内容的 MIME 输出
- FDF
- GnuPG
- haru(实验性)
- Ming(实验性)
- wkhtmltox(*)
- PS
- RPM Reader(停止维护)
- RpmInfo
- XLSWriter Excel操作(*)
- php第三方库非扩展
- 进程控制扩展
- Eio
- Ev
- Expect
- Libevent
- PCNTL
- POSIX
- 程序执行扩展(核心)
- parallel
- pthreads(*)
- pht
- Semaphore
- Shared Memory
- Sync
- 其它基本扩展
- FANN
- GeoIP(*)
- JSON(内置)
- Judy
- Lua
- LuaSandbox
- Misc(核心)
- Parsekit
- SeasLog(-)
- SPL(核心)
- SPL Types(实验性)
- Streams(核心)
- stream_wrapper_register
- stream_register_wrapper(同上别名)
- stream_context_create
- stream_socket_client
- stream_socket_server
- stream_socket_accept
- stream_socket_recvfrom
- stream_socket_sendto
- Swoole(*)
- Tidy扩展
- Tokenizer
- URLs(核心)
- V8js(*)
- Yaml
- Yaf
- Yaconf(核心)
- Taint(检测xss字符串等)
- Data Structures
- Igbinary(7.0+)
- 其它服务
- 网络(核心)
- Sockets
- socket_create
- socket_bind(服务端即用于监听的套接字)
- socket_listen(服务端)
- socket_accept(服务端)
- socket_connect(客户端)
- socket_read
- socket_recv(类似socket_read)
- socket_write
- socket_send
- socket_close
- socket_select
- socket_getpeername
- socket_getsockname
- socket_get_option
- socket_getopt(socket_get_option的别名)
- socket_set_option
- socket_setopt( socket_set_option的别名)
- socket_recvfrom
- socket_sendto
- socket_addrinfo_bind
- socket_addrinfo_connect
- socket_addrinfo_explain
- socket_addrinfo_lookup
- socket_clear_error
- socket_last_error
- socket_strerror
- socket_cmsg_space
- socket_create_listen
- socket_create_pair
- socket_export_stream
- socket_import_stream
- socket_recvmsg
- socket_sendmsg
- socket_set_block
- socket_set_nonblock
- socket_shutdown
- socket_wsaprotocol_info_export
- socket_wsaprotocol_info_import
- socket_wsaprotocol_info_release
- cURL(*)
- curl_setopt
- Event(*)
- chdb
- FAM
- FTP
- Gearman
- Gopher
- Gupnp
- Hyperwave API(过时)
- LDAP(+)
- Memcache
- Memcached(+)
- mqseries
- RRD
- SAM
- ScoutAPM
- SNMP
- SSH2
- Stomp
- SVM
- SVN(试验性的)
- TCP扩展
- Varnish
- YAZ
- YP/NIS
- 0MQ(ZeroMQ、ZMQ)消息系统
- 0mq例子
- ZooKeeper
- 搜索引擎扩展
- mnoGoSearch
- Solr
- Sphinx
- Swish(实验性)
- 针对服务器的扩展
- Apache
- FastCGI 进程管理器
- IIS
- NSAPI
- Session 扩展
- Msession
- Sessions
- Session PgSQL
- 文本处理
- BBCode
- CommonMark(markdown解析)
- cmark函数
- cmark类
- Parser
- CQL
- IVisitor接口
- Node基类与接口
- Document
- Heading(#)
- Paragraph
- BlockQuote
- BulletList
- OrderedList
- Item
- Text
- Strong
- Emphasis
- ThematicBreak
- SoftBreak
- LineBreak
- Code
- CodeBlock
- HTMLBlock
- HTMLInline
- Image
- Link
- CustomBlock
- CustomInline
- Parle
- 类函数
- PCRE( 核心)
- POSIX Regex
- ssdeep
- 字符串(核心)
- 变量与类型相关扩展
- 数组(核心)
- 类/对象(核心)
- Classkit(未维护)
- Ctype
- Filter扩展
- 过滤器函数
- 函数处理(核心)
- quickhash扩展
- 反射扩展(核心)
- Variable handling(核心)
- Web 服务
- OAuth
- api
- 例子:
- SCA(实验性)
- SOAP
- Yar
- XML-RPC(实验性)
- Windows 专用扩展
- COM
- 额外补充:Wscript
- win32service
- win32ps(停止更新且被移除)
- XML 操作(也可以是html)
- libxml(内置 默认开启)
- DOM(内置,默认开启)
- xml介绍
- 扩展类与函数
- DOMNode
- DOMDocument(最重要)
- DOMAttr
- DOMCharacterData
- DOMText(文本节点)
- DOMCdataSection
- DOMComment(节点注释)
- DOMDocumentFragment
- DOMDocumentType
- DOMElement
- DOMEntity
- DOMEntityReference
- DOMNotation
- DOMProcessingInstruction
- DOMXPath
- DOMException
- DOMImplementation
- DOMNamedNodeMap
- DOMNodeList
- SimpleXML(内置,5.12+默认开启)
- XMLReader(5.1+内置默认开启 用于处理大型XML文档)
- XMLWriter(5.1+内置默认开启 处理大型XML文档)
- SDO(停止维护)
- SDO-DAS-Relational(试验性的)
- SDO DAS XML
- WDDX
- XMLDiff
- XML 解析器(Expat 解析器 默认开启)
- XSL(内置)
- 图形用户界面(GUI) 扩展
- UI
- PHP SPL(PHP 标准库)
- 数据结构
- SplDoublyLinkedList(双向链表)
- SplStack(栈 先进后出)
- SplQueue(队列)
- SplHeap(堆)
- SplMaxHeap(最大堆)
- SplMinHeap(最小堆)
- SplPriorityQueue(堆之优先队列)
- SplFixedArray(阵列【数组】)
- SplObjectStorage(映射【对象存储】)
- 迭代器
- ArrayIterator
- RecursiveArrayIterator(支持递归)
- DirectoryIterator类
- FilesystemIterator
- GlobIterator
- RecursiveDirectoryIterator
- EmptyIterator
- IteratorIterator
- AppendIterator
- CachingIterator
- RecursiveCachingIterator
- FilterIterator(遍历并过滤出不想要的值)
- CallbackFilterIterator
- RecursiveCallbackFilterIterator
- RecursiveFilterIterator
- ParentIterator
- RegexIterator
- RecursiveRegexIterator
- InfiniteIterator
- LimitIterator
- NoRewindIterator
- MultipleIterator
- RecursiveIteratorIterator
- RecursiveTreeIterator
- 文件处理
- SplFileInfo
- SplFileObject
- SplTempFileObject
- 接口 interface
- Countable
- OuterIterator
- RecursiveIterator
- SeekableIterator
- 异常
- 各种类及接口
- SplSubject
- SplObserver
- ArrayObject(将数组作为对象操作)
- SPL 函数
- 预定义接口
- Traversable(遍历)接口
- Iterator(迭代器)接口
- IteratorAggregate(聚合式迭代器)接口
- ArrayAccess(数组式访问)接口
- Serializable 序列化接口
- JsonSerializable
- Closure 匿名函数(闭包)类
- Generator生成器类
- 生成器(php5.5+)
- yield
- 反射
- 一、反射(reflection)类
- 二、Reflector 接口
- ReflectionClass 类报告了一个类的有关信息。
- ReflectionObject 类报告了一个对象(object)的相关信息。
- ReflectionFunctionAbstract
- ReflectionMethod 类报告了一个方法的有关信息
- ReflectionFunction 类报告了一个函数的有关信息。
- ReflectionParameter 获取函数或方法参数的相关信息
- ReflectionProperty 类报告了类的属性的相关信息。
- ReflectionClassConstant类报告有关类常量的信息。
- ReflectionZendExtension 类返回Zend扩展相关信息
- ReflectionExtension 报告了一个扩展(extension)的有关信息。
- 三、ReflectionGenerator类用于获取生成器的信息
- 四、ReflectionType 类用于获取函数、类方法的参数或者返回值的类型。
- 五、反射的应用场景
- phpRedis
- API
- API详细
- redis DB 概念:
- 通用命令:rawCommand
- Connection
- Server
- List
- Set
- Zset
- Hash
- string
- Keys
- 事物
- 发布订阅
- 流streams
- Geocoding 地理位置
- lua脚本
- Introspection 自我检测
- biMap
- 原生
- php-redis 操作类 封装
- redis 队列解决秒杀解决超卖:
- swoole+框架笔记
- 安装及常用Cli操作
- TCP
- 4种回调函数的写法
- easyswoole
- 目录结构
- 配置文件
- Linux+Nginx
- 前置
- linux
- 开源网站镜像及修改yum源
- 下载linux
- Liunx中安装PHP7.4 的三种方法(Centos8)
- yum安装
- 源码编译安装
- LNMP一键安装
- 查看linux版本号
- 设置全局环境变量
- 查看php.ini必须存放的位置
- 防火墙与端口开放
- nohup 后台运行命令
- linux 查看nginx,php-fpm运行用户及用户组
- 网络配置
- CentOS中执行yum update时报错
- 关闭防火墙
- 查看端口是否被占用
- 查看文件夹大小
- nginx相关
- 一个典型的nginx配置
- nginx关于多个项目的配置(易于管理)
- nginx.config配置文件的结构
- 1、events
- 2、http
- nginx的location配置详解
- Nginx相关命令
- Nginx安装
- 配置伪静态
- 为静态配置例子
- apache
- nginx
- pathinfo模式
- Shell脚本
- bash
- shell 语言中 0 代表 true,0 以外的值代表 false。
- 变量
- shell字符串
- shell数组
- shell注释
- 向Shell脚内传递参数
- 运算符
- 显示命令执行结果
- printf
- test 命令
- 流程控制与循环
- if
- case
- for
- while
- until
- break和continue
- select 结构
- shell函数
- shell函数的全局变量和局部变量
- 将shell输出写入文件中(输出重定向)
- Shell脚本中调用另一个Shell脚本的三种方式
- 定时任务
- PHP实现定时任务的五种方法
- 优化
- ab压力测试
- 缓存
- opcache
- memcache
- php操作
- 数据库
- 配置
- 数据库锁机制
- 主从分布
- 数据库设计
- 逻辑设计
- 物理设计
- 字段类型的选择
- 笔记
- SET FOREIGN_KEY_CHECKS
- 字符集与乱码
- SQL插入 去除重复记录的实现
- 分区表
- nginx 主从配置
- nginx 负载均衡的配置
- 手动搭建Redis集群和MySQL主从同步(非Docker)
- Redis Cluster集群
- mysql主从同步
- 用安卓手机搭建 web 服务器
- 软件选择
- url重写
- 大流量高并发解决方案
- 权限设计
- ACL
- RBAC
- RBAC0
- RBAC1(角色上下级分层)
- RBAC2(用户角色限约束)
- RBAC3
- 例子
- Rbac.class.php
- Rbac2
- Auth.class.php
- fastadmin Auth
- tree1
- ABAC 基于属性的访问控制
- 总结:SAAS后台权限设计案例分析
- casbin-权限管理框架
- 开始使用
- casbinAPI
- casbin管理API
- RBAC API
- Think-Casbin
- 单点登录(SSO)
- OAuth授权
- OAuth 2.0 的四种方式
- 授权码
- 隐藏式
- 密码式
- 凭证式
- 更新令牌
- 例子:第三方登录
- 微服务架构下的统一身份认证和授权
- 代码审计
- 漏洞挖掘的思路
- 命令注入
- 代码注入
- XSS 反射型漏洞
- XSS 存储型漏洞
- xss过滤
- HTML Purifier文档
- 开始
- id规则
- class规则
- 过滤分类
- Attr
- AutoFormat
- CSS
- Cache
- Core
- Filter
- html
- Output
- Test
- URI
- 其他
- 嵌入YouTube视频
- 加快HTML净化器的速度
- 字符集
- 定制
- Tidy
- URI过滤器
- 在线测试
- xss例子
- 本地包含与远程包含
- sql注入
- 函数
- 注释
- 步骤
- information_schema
- sql注入的分类
- 实战
- 防御
- CSRF 跨站请求伪造
- 计动态函数执行与匿名函数执行
- unserialize反序列化漏洞
- 覆盖变量漏洞
- 文件管理漏洞
- 文件上传漏洞
- 跳过登录
- URL编码对照表
- XXE
- 前端、移动端
- html5
- meta标签
- flex布局
- javascript
- jquery
- 选择器
- 精细分类
- 事件
- on事件无效:
- jquery自定义事件
- 表单操作
- 通用
- select
- checkbox
- radio
- js正则相关
- js中判断某字符串含有某字符出现的次数
- js匹配指定字符
- $.getjson方法配合在url上传递callback=?参数,实现跨域
- pajax入门
- jquery的extend插件制作
- jquery的兼容
- jquery的连续调用:
- $ 和 jQuery 及 $() 的区别
- 页面响应顺序及$(function(){})等使用
- 匿名函数:
- ajax
- 获取js对象所有方法
- dom加载
- ES6函数写法
- ES6中如何导入和导出模块
- 数组的 交集 差集 补集 并集
- phantomjs
- js数组的map()方法操作json数组
- 实用函数
- js精确计算CalcEval 【价格计算】 浮点计算
- js精确计算2
- js数组与对象的遍历
- bootstrap
- class速查
- 常见data属性
- data-toggle与data-target的作用
- 组件
- bootstrapTable
- 表选项
- 表选项2
- 示例
- 数据格式(json)
- 用法(row:行,column:列)
- Bootstrap-table使用footerFormatter做统计列功能
- 示例2
- JQuery-Jquery的TreeGrid插件
- 服务器端分页
- 合并单元格1
- 合并单元格2
- 合并单元格3
- 合并单元格4
- 合并单元格5(插件)
- 列求和
- 添加行,修改行、扩展行数据
- 扩展
- 开源项目
- PhpSpreadsheet
- 实例
- 会员 数据库表设计
- 程序执行
- 开发总结
- API接口
- API接口设计
- json转化
- app接口
- 杂项
- 三方插件库
- 检测移动设备(包括平板电脑)
- curl封装
- Websocket
- 与谷歌浏览器交互
- Crontab管理器
- 实用小函数
- PHP操作Excel
- SSL证书
- sublime Emmet的快捷语法
- 免费翻译接口
- 接口封装
- 免费空间
- 架构师必须知道的26项PHP安全实践
- 大佬博客
- 个人支付平台
- RPC(远程调用)及框架