【问题标题】:PHP 7 copied php_http.dll into php/ext/ not working?PHP 7 将 php_http.dll 复制到 php/ext/ 中不起作用?
【发布时间】:2016-12-27 06:07:06
【问题描述】:

注意: 我应该补充一点,我不是在寻找 cURL 解决方案。我已经知道并做 cURL。我想看看在我的 http 函数实验中会发生什么。

我正在通过 XAMPP 安装运行 PHP 7:

C:xampp\php

我下载了一个包含 .dll 文件的 Windows pecl-5.2.6-Win32.zip,然后我将 php_http.dll 文件复制到了我的 php\ext 文件夹中,其中找到了所有其他 .dll。

我编辑了我的 php.ini 并按照所有其他扩展名的字母顺序添加了 extension=php_http.dll 行(好像这有什么不同)。

然后我重新启动 Apache,并尝试执行 $response = http_get($url);,但收到错误“调用未定义函数 http_get()”。

似乎我做的所有步骤都是正确的,但 http 功能无法正常工作。另外,我查看了我的 phpinfo(),没有看到任何对任何 PECL 扩展的引用。

更新: 我在另一个论坛上看到了一个类似的问题,在 Apache error.log 中找到了这一行:

C:\xampp\php\ext\php_http.dll' - 找不到指定的模块。

个人说他降级了他的php版本,然后重复了这些步骤,它起作用了。

昨晚我从 PHP 7 降级到 PHP 5.6。我将 .dll 复制到 /ext,在 php.ini 中启用了 php_http.dll,然后得到了不同的错误:

HP 警告:PHP 启动:无法加载动态库 'C:\xampp\php\ext\php_http.dll' - %1 不是有效的 Win32 应用程序。\r\n 在第 0 行的未知中

我找到了这些Windows http extensions,再次复制了.dll文件,重新启动了Apache,但现在我又回到了

PHP 警告:PHP 启动:无法加载动态库 'C:\xampp\php\ext\php_http.dll' - 找不到指定的模块。\r\n 在第 0 行的未知中

【问题讨论】:

    标签: php pecl


    【解决方案1】:

    您可以简单地使用 curl 并获得相同的结果,而不是进行如此多的更改。 http_get 上对 PECL 的引用已被删除。该版本的 PECL 适用于 PHP 5.2.x 。你用的是哪个版本的php?相反,您可以使用此功能

    function url_get($url)
    {
        $ch = curl_init();    // initialize curl handle
        curl_setopt($ch, CURLOPT_URL,$url); // set url to post 
        curl_setopt($ch, CURLOPT_FAILONERROR, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// allow redirects
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
        curl_setopt($ch, CURLOPT_TIMEOUT, 10); // times out after 10s
        $urlcontent = curl_exec($ch); 
        curl_close($ch); 
        return($urlcontent);
    } 
    $url = "example.com";
    url_get($url);
    

    【讨论】:

    • 我一直在这个项目中广泛使用 cURL。我不是要 cURL 解决方案。我想看看 http 函数会发生什么。
    • @InfiniteLoop 如果您已阅读我的回答,我已经说过它适用于 php 5.2.x。但我不知道你用的是哪个版本的 PHP?
    • 啊,对不起。我从 PHP 7(似乎不是 7 的 PECL)回滚到 PHP 5.6。仍然收到Unable to load dynamic library 'C:\xampp\php\ext\php_http.dll' - The specified module could not be found. 错误。扩展似乎是为这个版本制作的。我可能不得不一直回滚到早期的 PHP 版本,直到一个版本工作?
    • 这可能是徒劳的练习,因为我不确定是否值得为了让过时的函数工作而不断回滚我的 PHP 版本。
    • @InfiniteLoop 我建议不要在这上面浪费时间,因为我什至无法在任何官方网站 php.net 或 PECL 网站中找到方法 http_get 的参考。如果 curl 没有解决您的目的,可能还有其他方法可以实现。
    猜你喜欢
    • 1970-01-01
    • 2021-04-22
    • 2016-09-19
    • 2017-04-27
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多