http 扩展已经加载,但 http 函数全部不可以用


作者: 我不是鱼 (2017-06-21 11:54) 分类: PHP   标签: pecl_http

pecl_http 已经安装好,并且成功加载,在 phpinfo() 中可以看到,但 http 函数全部不可用,提示未定义:

Fatal error: Uncaught Error: Call to undefined function http_get()
Fatal error: Uncaught Error: Call to undefined function http_parse_headers()
Fatal error: Uncaught Error: Call to undefined function http_parse_cookie()

这里首先要确认安装的 pecl_http 是什么版本,因为版本1及以下和版本2及以上是完全不同的两个api。

https://pecl.php.net/package/pecl_http

如果安装的是版本1,最新 1.7.6 那么如下函数是可用的

http://php.net/manual/fa/ref.http.php

但如果安装的是2以上版本,最新 3.1.0 ,那么以上的 http 函数都是不可用的。2及以上版本都没有再提供这些函数,都是类以命名空间的方式引用。具体请参考:

https://mdref.m6w6.name/http

下面具体以 parse cookie 举个例子

版本 1.7.6

代码:

<?php
$setCookie = 'name=lnmp; url=lnmp.cn; expires=Thu, Nov 9 2017 10:00:00 GMT; '
    . 'path=/; domain=lnmp.cn; comment=lnmp.cn';
$cookie = http_parse_cookie($setCookie, 0, ['comment']);
print_r($cookie);

输出

stdClass Object
(
    [cookies] => Array
        (
            [name] => lnmp
            [url] => lnmp.cn
        )

    [extras] => Array
        (
            [comment] => lnmp.cn
        )

    [flags] => 0
    [expires] => 1510221600
    [path] => /
    [domain] => lnmp.cn
)


版本 3.1

代码:

<?php
$setCookie = 'name=lnmp; url=lnmp.cn; expires=Thu, Nov 9 2017 10:00:00 GMT; '
    . 'path=/; domain=lnmp.cn; comment=lnmp.cn';
$cookie = new http\Cookie($setCookie, 0, ['comment']);
print_r([
    'cookies' => $cookie->getCookies(),
    'extras'  => $cookie->getExtras(),
    'flags'   => $cookie->getFlags(),
    'expires' => $cookie->getExpires(),
    'path'    => $cookie->getPath(),
    'domain'  => $cookie->getDomain(),
    'string'  => (string)$cookie,
]);

输出:

Array
(
    [cookies] => Array
        (
            [name] => lnmp
            [url] => lnmp.cn
        )

    [extras] => Array
        (
            [comment] => lnmp.cn
        )

    [flags] => 0
    [expires] => 1510221600
    [path] => /
    [domain] => lnmp.cn
    [string] => name=lnmp; url=lnmp.cn; domain=lnmp.cn; path=/; expires=Thu, 09 Nov 2017 10:00:00 GMT; comment=lnmp.cn; 
)

前一篇: pecl_http configure: error: please install and enable pecl/raphf
后一篇: 从 PHP 7 升级到 PHP 7.2


添加评论

昵称:


验证码