• 技术文章 >后端开发 >PHP7

    如何解决php7无法加载curl的问题

    醉折花枝作酒筹醉折花枝作酒筹2021-06-02 09:15:47转载249
    本篇文章给大家介绍一下解决php7无法加载curl的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

    为了快速救火先贴出解决办法:

    #在apache 的主配置文件httpd.conf中加入
    LoadFile "E:\myServer\php\libssh2.dll"

    最近对PHP环境搭建配置做了一些创新的尝试,目的就是要最大限度让系统各部分更加干净,独立的apache、php、mysql,除此之外不需要更多。

    在PHP配置文件中是可以使用相对路径的,可互联网上你能看到的教程全部是写绝对路径,例如D:\path\php\ext,现在不用了

    #第732行 php.ini 7.2.3
    extension_dir = "..\php\ext"

    在apache中的配置是可以动态引入的

    Include conf/user.conf
    Include conf/codenight/*.conf

    甚至可以使用变量

    Define ROOT "E:\myServer"
    Define SRV_ROOT "${ROOT}/Apache24"

    以上可以解决非常多的配置问题,关于PHP环境搭建配置优化,在今天的和以前的推送中有详细说明,这里不展开。

    配置优化后,PHP所有的模块都能如期加载,完美。

    不不不,php_curl不行,这是apache告诉我们的

    #在..\Apache24\logs中我们发现仅有的一条警告
    PHP Warning:  PHP Startup: Unable to load dynamic library 'curl' 
    (tried: ..\\php\\ext\\curl (\xef\xbf\xbd\xd2\xb2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd6\xb8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc4\xa3\xef\xbf\xbd\xe9\xa1\xa3), ..\\php\\ext\\php_curl.dll (\xef\xbf\xbd\xd2\xb2\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xd6\xb8\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc4\xa3\xef\xbf\xbd\xe9\xa1\xa3)) in Unknown on line 0

    那PHP的curl模块是用不了了,我们测试了

    Fatal error: Uncaught Error: Call to undefined function curl_init()

    emmmmm?

    出了这个模块无法加载的问题,开始我怀疑是不是../php/ext的相对路径不能这样写,但其他模块mysqli,mbstring都没有问题,排除

    百度搜索一波

    Q: PHP Startup: Unable to load dynamic library 'curl'

    不是想要的答案,换一种方式

    Q: php7不能使用curl

    A1:简单粗暴往httpd.conf塞四条语句

    LoadFile D:/php/php7.1/php7ts.dll  
    LoadFile D:/php/php7.1/libeay32.dll  
    LoadFile D:/php/php7.1/ssleay32.dll  
    LoadFile D:/php/php7.1/libssh2.dll

    A2:其实只用加载一个即可

    最终的解决方式是在php官网上搜索curl,然后看下面的英文评论.
    Move to Windows\system32 folder:
    libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
    Move to Apache24\bin folder
    libssh2.dll 
    我自己只是把libssh2.dll 这个文件放到Apache24\bin终于中解决。

    以上这两种方法都能生效,但第一种胡乱加载无关模块太多,其实后患无穷;第二种就要好得多,有思考和尝试。第二种方法提到的是把PHP目录下的一个文件libssh2.dll放到apache目录下,但移动文件也不符合最小改动原则,这个还可以改进一下。

    我们采用第三种动态加载的办法,通过在加载curl之前引入libssh2.dll即可,同时根据我们配置优化的结构,只用放到独立的php7.conf文件中,也不必修改httpd.conf

    第一行是我们加入的,这样的好处是PHP的配置在单独的文件,不干扰apache主配置文件

    #..\myServer\Apache24\conf\codenight\php7.conf
    #以支持curl
    LoadFile "${PHP_ROOT}/libssh2.dll"
     
    LoadModule php7_module "${PHP_ROOT}/php7apache2_4.dll"
    AddHandler application/x-httpd-php .php
    # 配置 php.ini所在路径
    PHPIniDir "${PHP_ROOT}"

    推荐学习:php视频教程

    以上就是如何解决php7无法加载curl的问题的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:php7 curl
    上一篇:php7如何开启强类型模式 下一篇:php7如何安装event扩展
    第16期线上培训班

    相关文章推荐

    • ubuntu怎么安装lamp php7• PHP7如何能够连接数据库• php7怎么安装memcache扩展• php7如何开启强类型模式• 对php7的了解(附详细教程)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网