解決php7無法載入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的初学者,集成环境例如wampServer、phpStudy、Xammp确实很爽,但需要警惕所有技术上的便捷偷懒是把双刃剑,开始的捷径可能演变为荆棘之路,带来刺痛、麻痹了一些初学者无限膨胀。学习需要踏实的去探求一些本质的东西。学习编程就是求真的过程。
最近一直在折腾环境的事,就是为了能摆脱对集成环境的依赖,去创造去发现,还原一条简单纯粹的路,看清它原来的样子。
有时候是你的固执会让你成长,心守原力,手握神兵。
以上是解決php7無法載入curl的問題及反思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

curl和Pythonrequests都是發送HTTP請求的強大工具。雖然curl是一種命令列工具,可讓您直接從終端機發送請求,但Python的請求庫提供了一種更具程式化的方式來從Python程式碼發送請求。將curl轉換為Pythonrequestscurl指令的基本語法如下所示:curl[OPTIONS]URL將curl指令轉換為Python請求時,我們需要將選項和URL轉換為Python程式碼。這是一個範例curlPOST指令:curl-XPOSThttps://example.com/api

在Linux下更新curl版本,您可以按照以下步驟進行操作:檢查目前curl版本:首先,您需要確定目前系統中安裝的curl版本。開啟終端,並執行以下指令:curl--version該指令將顯示目前curl的版本資訊。確認可用的curl版本:在更新curl之前,您需要確定可用的最新版本。您可以造訪curl的官方網站(curl.haxx.se)或相關的軟體來源,尋找最新版本的curl。下載curl原始碼:使用curl或瀏覽器,下載您選擇的curl版本的原始碼檔案(通常為.tar.gz或.tar.bz2

從頭到尾:如何使用php擴充cURL進行HTTP請求引言:在Web開發中,經常需要與第三方API或其他遠端伺服器進行通訊。而使用cURL進行HTTP請求是一種常見且強大的方式。本文將介紹如何使用php擴充cURL來執行HTTP請求,並提供一些實用的程式碼範例。一、準備工作首先,請確保php已安裝cURL擴充。可以在命令列執行php-m|grepcurl查

PHP8.1發布:引入curl多個請求並發處理近日,PHP官方發布了最新版本的PHP8.1,其中引入了一個重要的特性:curl多個請求並發處理。這個新功能為開發者提供了一個更有效率和靈活的方式來處理多個HTTP請求,大大提升了效能和使用者體驗。在以往的版本中,處理多個請求往往需要透過建立多個curl資源,並使用循環來分別發送和接收資料。這種方式雖然能夠實現目

PHPCurl中如何處理網頁的301重定向?使用PHPCurl發送網路請求時,常會遇到網頁回傳的301狀態碼,表示頁面被永久重定向。為了正確處理這種情況,我們需要在Curl請求中加入一些特定的選項和處理邏輯。以下將詳細介紹在PHPCurl中如何處理網頁的301重定向,並提供具體的程式碼範例。 301重定向處理原理301重定向是指伺服器回傳了一個30

在linux中,curl是一個非常實用的、用來與伺服器之間傳輸資料的工具,是一個利用URL規則在命令列下工作的檔案傳輸工具;它支援檔案的上傳和下載,是綜合傳輸工具。 curl提供了一大堆非常有用的功能,包括代理存取、使用者認證、ftp上傳下載、HTTP POST、SSL連線、cookie支援、斷點續傳等等。

php7.0安裝mongo擴充的方法:1、建立mongodb使用者群組和使用者;2、下載mongodb原始碼包,並將原始碼包放到“/usr/local/src/”目錄下;3、進入“src/”目錄;4、解壓縮原始碼包;5、建立mongodb檔案目錄;6、將檔案複製到「mongodb/」目錄;7、建立mongodb設定檔並修改設定即可。

在php5中,我們可以使用fsockopen()函數來偵測TCP埠。這個函數可以用來開啟一個網路連接和進行一些網路通訊。但是在php7中,fsockopen()函數可能會遇到一些問題,例如無法開啟連接埠、無法連接到伺服器等。為了解決這個問題,我們可以使用socket_create()函數和socket_connect()函數來偵測TCP埠。
