Home>Article>Backend Development> How to solve the problem that php7 cannot load curl
本篇文章给大家介绍一下解决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视频教程
The above is the detailed content of How to solve the problem that php7 cannot load curl. For more information, please follow other related articles on the PHP Chinese website!