• 认真地记录技术中遇到的坑!

PHP 报 curl_init() 未定义问题

PHP 悠悠 2年前 (2018-01-22) 668次浏览 0个评论

问题描述

在Windows平台,Apache服务器环境下,php运行报Call to undefined function curl_init()

问题排查

该问题的排查按照下面的步骤逐一进行检查。

检查PHP配置

curl_init() 需要扩展 curl 的支持,首先确定 php.ini 配置文件中 extension=php_curl.dll 前面的分号;是否去掉。

另外还需要检查 extension_dir = “ext” 配置项,将ext换成扩展的绝对路径,修改配置之后,记得重启服务器。

确定配置好之后,新建一个 info.php 文件:

curl_init();
phpinfo();

首先在浏览器中输入PHP文件地址访问,查看是否开启了curl扩展以及是否报错。

另外还需要在Windows命令行cmd中直接用PHP运行该文件,如果PHP没有加环境变量,则可以使用PHP的绝对路径,或者去到php安装目录执行。

php info.php

查看是否报错以及是否含有curl开启的信息。

检查服务器配置

如果在浏览器中访问时报 curl_init() 未定义或者没有加载curl扩展,而在命令行中没有报错或者加载了curl扩展,则说明是Apache服务器配置的问题。

首先检查Apache的文件是否更改过,那些dll是否缺少,还有PHP模块的加载地址是否正确,并检查确认加载的PHP配置文件是否正确,是否和配置的PHP文件是否一致,可以通过比对phpinfo和Apache中的配置文件确认。

LoadModule php7_module "D:\php-7.1.12-Win32-VC14-x64\php7apache2_4.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "D:\php-7.1.12-Win32-VC14-x64"

修改配置文件之后重启 apache 服务,查看浏览器的 curl 扩展是否开启。

如果问题依然存在,则尝试将PHP安装根目录的 libeay32.dll,libssh2.dll,ssleay32.dll这三个文件复制到Apache的bin目录下,重启Apache。

如果上面的方法都不好使

那么考虑是哪一个环节出了问题,如果是PHP那个环节,就重新安装PHP,如果是Apache,就重新安装Apache。有时候是因为某些关键的dll文件缺失,还有版本不兼容导致的问题。


喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址