在日新月异的信息化下,软件也在跟随着互联网的脚步,逐步推进着各项计划。
近些年,各大语言像是不约而同的都在改进或优化,从而能让programmer在开发效率上有所提升,还使得软件在升级了新版本的program language加持下,运行速度和处理并发的能力得到前所未有的提升。
Java自2014年发布了新的里程碑的Java 8版本号,之后,Oracle变向外界承诺每三年发布一个LTS(Long Time Support)长期支持版本,每年的三月份和九月份都发布一个版本。然而,java社区可不管java发布了多少个新版本,他们依旧是在使用Java 8版本。
直到Java 17的发布,且Oracle更改了协议,或许是促使开发者使用Java 17 LTS,由享誉全球、Java 开发离不开的Spring framework牵头,也就是Spring framework 6.x 及以上版本必须使用Java 17、而Springboot 3.x版本及后续版本也必须是Java 17,因为Srpingboot 3.x依赖的是Spring framework 6.x。
而php5.6.x版本后,也在响应着互联网的潮流,顺应当下瞬息万变的信息化,也在改进着、优化着,或许试图挽回曾今那句PHP是世界上最好的语言!而努力奋进。
即使我们没有使用PHP新版本的特性,只要你的软件运行在新版本的PHP下,性能那跟之前的,可就没的说了。(这里说的不单单只是PHP,像Java、C/C++、Python、golang、C#等)
下载 Apache
对于php7.4及PHP 5版本而言,可以下载Apache历史版本。
Apache 历史版本链接:https://www.apachelounge.com/download/additional/ 。

我们将下载下来的压缩包进行解压,打开其根路径下的conf文件夹,用你常用的IDE编辑httpd.conf文件。
#php5 support
LoadModule php5_module "D:/software/php-5.6.30/php5apache2_4.dll"
AddHandler application/x-httpd-php .php
# configure the path of php ini
PHPIniDir "D:/software/php-5.6.30"
有时,你可能还需要开启URL重写模块。

而对于PHP7.X版本,其实是与PHP5.X配置大同小异。
#php7 support
LoadModule php7_module "D:/software/php-7.4.8/php7apache2_4.dll"
AddHandler application/x-httpd-php .php .html .htm
#configure the path to php.ini
PHPIniDir "D:/software/php-7.4.8"
#startup openssl
LoadFile "D:/software/php-7.4.8/libssh2.dll"
LoadFile "D:/software/php-7.4.8/libcrypto-1_1-x64.dll"
LoadFile "D:/software/php-7.4.8/libssl-1_1-x64.dll"
然而当你将使用了PHP8.x,Apache配置却不是什么php8_module,而是php_module。
#php8 support
LoadModule php_module "D:/software/php-8.2.25/php8apache2_4.dll"
AddHandler application/x-httpd-php .php .html .htm
#configure the path to php.ini
PHPIniDir "D:/software/php-8.2.25"
#startup openssl curl
LoadFile "D:/software/php-8.2.25/libssh2.dll"
LoadFile "D:/software/php-8.2.25/libcrypto-3-x64.dll"
LoadFile "D:/software/php-8.2.25/libssl-3-x64.dll"
#this is not require ( my english is learning ...)
LoadFile "D:/software/php-8.2.25/libsodium.dll"
php.ini配置文件开启 curl 扩展
我们将下载下来的PHP二进制压缩包,进行解压后,打开它,在根目录下,拷贝php.ini-development一份在同路径下,并重命名为php.ini。
PHP各个版本下载链接:https://windows.php.net/downloads/releases/archives/

修改PHP 扩展的目录。

根据自己项目的实际情况,开启相应的扩展,只需将分号去掉即可生效。

至于PHP7.X版本,开启扩展,与PHP5.X也都大抵相似,只是扩展名不再是像PHP5.X那般,而是extension=extension_name,例如CURL扩展则是extension=curl。

然而,到了PHP8.X版本,想要开启curl扩展,总是在Apache下出现Unable to load dynamic library 'curl'的错误。

解决 php8.x 无法加载 curl 扩展的问题
其实,我们在Apache的httpd.conf配置文件里,已经通过LoadFile的方式来加载dynamic library,可是仍旧加载不了curl这个扩展。
起先,我一度怀疑是不是需要将libssh2.dll、libcrypto-3-x64.dll、libssl-3-x64.dll三个dynamic library(现在我都会文章里适当的插入写英文,一方面是加深了我的单词的记忆,另一方面也能鞭策我不断的学习英语,不管你介不介意,反正我都加了。),拷贝到Apache的bin文件夹下或System32目录里呢?
然而,这个错误的想法,没过几秒钟,就被我抛之脑后了。之所以会有将那些文件复制到指定的目录内,那是网上都是这样千篇一律解决方案,如果它可行,我也是不推荐的!
同样是通过LoadFile方式来加载那些dynamic library,为什么PHP7.X却是可以load dynamic library ‘curl'?而php8却出现了Unable to load dynamic library 'curl'的错误呢?
很显然,这不是出现在LoadFile这种加载方式上的错误,从而也就没有必要将那几个dynamic library拷贝到特定的位置上了。
那么,最后便是Apache版本加载不了PHP8.X版本的curl扩展了。
知道了这一点后,我们将再次打开Apache下载链接,下载最新的Apache。


