【问题标题】:"Call to undefined function" error for global "curl_init" function because of Namespace由于命名空间,全局“curl_init”函数的“调用未定义函数”错误
【发布时间】:2018-03-15 06:55:48
【问题描述】:

我使用这样的东西:

namespace Lorem ;

class Ipsum {
    function foo ($url) {
        $c = curl_init($url) ;
    }
}

但我得到一个错误:

Fatal error: Call to undefined function Lorem\curl_init()

即使我将curl_init($url) 放在课堂外也会出现此错误。

我怎样才能阻止它?

编辑:我安装了 CURL 扩展。

【问题讨论】:

  • apt-get install php7.x-curl
  • 我用的是php v5.6.31,无权更新...
  • apt-get install php5-curl
  • 我安装了 CURL 扩展。
  • 这不是必需的,但请尝试$c = \curl_init($url)

标签: php function namespaces


【解决方案1】:

哦,这是因为您在命名空间内使用 curl_init;要解决它,只需在 curl_init() 之前使用反斜杠;

代码:

$c = \curl_init($url);

【讨论】:

  • 是的,但为什么需要这样做?当当前命名空间中不存在函数名称时,PHP 应该回退到全局命名空间。您不必在 \strpos()、\is_array() 等之前添加 \。为什么 \curl_init() 需要它??
  • 不需要斜线,扩展好像没有安装。您可以通过 function_exists('curl_version') 或 extension_loaded('curl') 进行检查。如果它已安装并处于活动状态,您应该得到 true。
猜你喜欢
  • 1970-01-01
  • 2015-07-02
  • 2011-05-27
  • 2021-09-21
  • 1970-01-01
  • 2015-06-11
相关资源
最近更新 更多