【问题标题】:I have cURL installed on Ubuntu 16 with PHP 7 but i get still Call to undefined function curl_init() [duplicate]我在带有 PHP 7 的 Ubuntu 16 上安装了 cURL,但我仍然调用未定义的函数 curl_init() [重复]
【发布时间】:2016-10-09 13:20:51
【问题描述】:

我已经完成了 sudo apt-get install curl、sudo apt-get php5-curl、sudo apt-get php-curl 但我得到了 curl_init() 的未定义函数

有谁知道这方面的任何解决方案吗?

这是我的 PHP 代码。

<?php 
    // create curl resource 
    $ch = curl_init(); 

    // set url 
    curl_setopt($ch, CURLOPT_URL, "example.com"); 

    //return the transfer as a string 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

    // $output contains the output string 
    $output = curl_exec($ch); 

    // close curl resource to free up system resources 
    curl_close($ch);      
?>

【问题讨论】:

  • 尝试检查 php -i | grep curl 以查看它是否输出任何内容或检查您是否在 php -m 中看到 curl。
  • 在我做 php -i | 之后grep curl,我明白了。 /etc/php/7.0/cli/conf.d/20-curl.ini,卷曲
  • php5 上不存在此错误
  • 好的,php -m 怎么样?你能在输出中看到 curl 吗?尽管如此,您应该可以通过sudo apt-get install php-curl 一切顺利
  • php7包也很有可能叫php7.0-curl

标签: php curl php-7 ubuntu-16.04


【解决方案1】:

通过phpinfo();函数检查apache使用的是什么版本的PHP。

检查很重要,因为您可能出于任何原因切换到较低版本(就像我的情况一样)。

现在从命令行运行这个命令来安装 curl

*(Don\'t copy this) sudo apt-get install php[version of php]-curl* 

例如如果是 5.6 则使用

sudo apt-get install php5.6-curl 

之后,别忘了重启apache2

sudo service apache2 restart

【讨论】:

  • 我在安装 php7 curl 时遇到了同样的问题。但是当我检查时我发现启用 php 版本是 5.6 所以它适用于一些可能面临同样问题的人
【解决方案2】:

对于运行 php7.0 的 Ubuntu 16.04,您应该像这样指定版本:

sudo apt-get install php7.0-curl

然后,像往常一样,用

重新启动apache

sudo service apache2 reload

【讨论】:

    【解决方案3】:

    试试这个:phpenmod curl 并重新启动 apache。希望这有助于(;

    【讨论】:

    • 我试过了,我得到了这个结果'模块 curl ini 文件在 /etc/php/5.6/mods-available 下不存在。 ,我猜它在错误的目录中卷曲,因为我使用的是 PHP 7
    • 尝试像@Ekn的评论那样启用php7 mod,并在phpenmod命令中指定php版本,如:phpenmod -v 7.0 curl
    【解决方案4】:

    对于在安装 php 扩展程序时遇到类似问题但仍收到 undefined 的任何人:

    1. 运行php -i | grep EXT_NAME 以查看输出,如果正则表达式匹配任何具有EXT_NAME(在上述情况下为curl)在您的phpinfo() 或简单地用&lt;?php phpinfo(); ?&gt; 制作一个测试文件,看看你是否发现扩展名。
    2. 运行php -m 以查看已加载的扩展,并检查您是否有另一个安装通过php -v 或多个使用根目录中的find -name 'php.ini'locate php.ini 的php.ini 文件优先。
    3. 如果您已安装模块,请不要忘记重新启动 apache(或任何其他类似服务)和/或启用。

    3# for apache 可以通过运行service apache2 restart

    如果您是从源代码构建,另一个可能的原因可能是您在安装扩展程序后忘记使用(同样,在本例中为 curl--with-curl[=DIR] 重新编译 PHP。

    【讨论】:

    • @AceJordan 您可能需要禁用 mod php5 并通过以下方式启用 php7:a2dismod php5 然后a2enmod php7.0 然后service apache2 restart
    • 那当然需要你先安装libapache2-mod-php7.0
    猜你喜欢
    • 2011-09-02
    • 2016-07-31
    • 2013-05-12
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    相关资源
    最近更新 更多