編碼的世界 / 優質文選 / 文明

解決php報錯:PHP Startup: Unable to load dynamic library ***的問題和thinkphp5不支持redis的問題


2022年7月30日
-   

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下沒用
最後發現需要在 apachehttpd-2.4.29-Win64-VC15in 下把這兩個dll放進去,重啟環境後OK
curl問題是參考了:https://www.jianshu.com/p/7e9b51c9cdd1  看到的

熱門文章