laragon下使用apache
记录一下使用 laragon 这个集成环境碰到的问题,希望可以帮到看到文章的人:
项目使用 laragon 集成环境,软件集成了很多东西,详情百度,确实省事。
但是不好的在于不能完美达到开箱即用。
1.运行thinkphp5,软件已经集成了 redis ,本地可以使用命令行访问。但是tp一直报不支持redis,百度并且查看tp内代码提示之后发现需要安装phpredis扩展才可以,如图所示的报错
官网找到的解决办法是针对linux的,而我需要windows下的,通过不懈努力之后看到有方法可以解决
我本地是laragon3.2 ,php7.1,redis是3.2.100 windows10 x64
https://windows.php.net/downloads/pecl/releases/redis/
到上面这个网址找到你的redis版本。如果像我一样没有3.2的,就找最新的3.1.6的可以用,然后进去后选择php版本7.1 的 ts版(不懂百度)的 vc14的x64版本,下载压缩包,解压后里面只需要一个php_redis.dll文件,放到对应的ext文件夹下,并在php.ini的对应地方添加 extension=php_redis.dll 重启服务器即可
2.解决可能出现的 PHP Startup: Unable to load dynamic library 。。。的错误,
起因是因为代码内用到了 curl的一些参数,但是写法是这样的
$o = [
CURLOPT_TIMEOUT => 20,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => request()->server('HTTP_USER_AGENT'),
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => ['p' => $p]
];
然后thinkphp就报错 Use of undefined constant CURLOPT_TIMEOUT - assumed 'CURLOPT_TIMEOUT',
找了大量资料,并且检查PHP的错误日志发现,php_curl.dll报错,然后我推断可能是因为没有加载上dll的原因导致的,又搜索了一些资料后发现curl.dll有两个依赖 libeay32.dll 和 ssleay32.dll 放到 c盘system32下没用
最后发现需要在 apache\httpd-2.4.29-Win64-VC15\bin 下把这两个dll放进去,重启环境后OK
curl问题是参考了:https://www.jianshu.com/p/7e9b51c9cdd1 看到的