本篇文章主要给大家介绍解决php7无法加载curl的问题及反思,希望对需要的朋友有所帮助!
为了快速救火先贴出解决办法:
#在apache 的主配置文件httpd.conf中加入 LoadFile "E:myServerphplibssh2.dll"
最近对PHP环境搭建配置做了一些创新的尝试,目的就是要最大限度让系统各部分更加干净,独立的apache、php、mysql,除此之外不需要更多。
在PHP配置文件中是可以使用相对路径的,可互联网上你能看到的教程全部是写绝对路径,例如D:pathphpext,现在不用了
#第732行 php.ini 7.2.3 extension_dir = "..phpext"
在apache中的配置是可以动态引入的
Include conf/user.conf Include conf/codenight/*.conf
甚至可以使用变量
Define ROOT "E:myServer" Define SRV_ROOT "${ROOT}/Apache24"
以上可以解决非常多的配置问题,关于PHP环境搭建配置优化,在今天的和以前的推送中有详细说明,这里不展开。
配置优化后,PHP所有的模块都能如期加载,完美。
不不不,php_curl不行,这是apache告诉我们的
#在..Apache24logs中我们发现仅有的一条警告 PHP Warning: PHP Startup: Unable to load dynamic library 'curl' (tried: ..\php\ext\curl (xefxbfxbdxd2xb2xefxbfxbdxefxbfxbdxefxbfxbdxd6xb8xefxbfxbdxefxbfxbdxefxbfxbdxefxbfxbdxc4xa3xefxbfxbdxe9xa1xa3), ..\php\ext\php_curl.dll (xefxbfxbdxd2xb2xefxbfxbdxefxbfxbdxefxbfxbdxd6xb8xefxbfxbdxefxbfxbdxefxbfxbdxefxbfxbdxc4xa3xefxbfxbdxe9xa1xa3)) 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 Windowssystem32 folder: libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll Move to Apache24bin folder libssh2.dll 我自己只是把libssh2.dll 这个文件放到Apache24bin终于中解决。
以上这两种方法都能生效,但第一种胡乱加载无关模块太多,其实后患无穷;第二种就要好得多,有思考和尝试。第二种方法提到的是把PHP目录下的一个文件libssh2.dll放到apache目录下,但移动文件也不符合最小改动原则,这个还可以改进一下。
我们采用第三种动态加载的办法,通过在加载curl之前引入libssh2.dll即可,同时根据我们配置优化的结构,只用放到独立的php7.conf文件中,也不必修改httpd.conf
第一行是我们加入的,这样的好处是PHP的配置在单独的文件,不干扰apache主配置文件
#..myServerApache24confcodenightphp7.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的初学者,集成环境例如wampServer、phpStudy、Xammp确实很爽,但需要警惕所有技术上的便捷偷懒是把双刃剑,开始的捷径可能演变为荆棘之路,带来刺痛、麻痹了一些初学者无限膨胀。学习需要踏实的去探求一些本质的东西。学习编程就是求真的过程。
最近一直在折腾环境的事,就是为了能摆脱对集成环境的依赖,去创造去发现,还原一条简单纯粹的路,看清它原来的样子。
有时候是你的固执会让你成长,心守原力,手握神兵。
以上就是【解决php7无法加载curl的问题及反思】的详细内容。
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » 解决php7无法加载curl的问题及反思