kali(2023) lamp 编译php5.6模块

前言

kali2023发布的环境中,默认支持php8.2,对于低版本的php并不支持,因此配置低版本的php需要自行编译安装。但是编译配置环境过程中有很多问题,此处记录备忘,也希望能帮助有需要的。

环境配置与路径扫盲

kali 2023虚拟机
使用kali自带gcc进行编译
待编译:php5.6、openssl-1.0.2k
kali中apache2对于php模块的配置,分为两个存储目录,一个是/etc/apache2/mods-avaiable/,存储可以使用的模块配置文件,另一个是/etc/apache2/mods-enabled/,存储的是软连接文件,用于标识激活的模块。a2enmoda2dismod命令可以用于激活、停止配置文件。

openssl-1.0.2编译安装

使用kali自带的openssl进行编译php,会显示数据类型的错误,需要自行编译低版本的openssl来编译php。
下载openssl-1.0.2压缩包文件至/home/kali路径下并解压
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
因为后面php要用到openssl的库,所以此处openssl编译的时候,要生成位置无关的静态库。

./config -fPIC no-shared
make

openssl默认的存储路径/usr/local/ssl就是等会编译php时,–with-openssl参数的值
参考文章

php5.6.30编译

编译php命令如下:

./configure --prefix=/home/kali/php --with-config-file-path=/etc/php/5.6 --with-apxs2=/usr/bin/apxs --enable-fpm --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-libxml-dir --with-xmlrpc --with-openssl=/usr/local/ssl --with-mcrypt --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl=/usr/include --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-fpm-group=nginx --with-fpm-user=nginx --enable-pcntl --with-mysql

--prefix 指定php安装路径
--with-config-file-path 指定php.ini类的配置文件存储路径
--with-apxs2 创建libphp5.so动态链接库模块
--with-openssl 指定使用版本openssl的存储路路径

中间可能会遇到很多lib库缺失的问题,可以简单用apt-get安装即可。

我遇到两个问题,需要修改文件内容或者文件路径。
一个是:

configure: error: Please reinstall the libcurl distribution -
easy.h should be in /include/curl/

安装libcurl4-gnutls-dev库并不起作用,但是根据configure文件和报错来看,应该是路径配置的问题,需要创建软连接,让configure能够找到easy.h头文件即可。
sudo ln -s /usr/include/x86_64-linux-gnu/curl /usr/include/curl

另一个:

The `freetype-config’ script is no longer installed by default
(Closes: #871470, #886461). All packages depending on libfreetype6-dev
should use pkg-config to find the relevant CFLAGS and libraries.

是因为freetype-config 被替代成 pkg-config ,新版本使用 pkg-config 管理 CFLAGS 和 库。
参考文章

需要先安装pkg-config
sudo apt install pkg-config
再修改config文件

cd php-5.6.30/
sed -i "s/freetype-config/pkg-config/g" ./configure
sed -i "s/freetype-config/pkg-config/g" ./ext/gd/config.m4
sed -i "s/FREETYPE2_CONFIG --cflags/FREETYPE2_CONFIG freetype2 --cflags/g" ./configure
sed -i "s/FREETYPE2_CONFIG --libs/FREETYPE2_CONFIG freetype2 --cflags/g" ./configure

后面再进行make && make install

至此,php5.6.30模块编译安装成功
在这里插入图片描述
查看apache2的modules路径,可以找到成功编译的libphp5.so动态链接模块。
在这里插入图片描述

网站启用php解析

编译安装好php后,网站还是无法用php5对php文件进行解析,需要在/etc/apache2/mods-avaiable/目录下,照着原有的php配置文件的conf、load文件,新建php5.conf、php5.load文件。
php5.conf文件中,要允许对php后缀文件进行解析。将原来denied的地方修改成granted即可。
在这里插入图片描述
如果命令行需要使用php,可以用update-alternatives命令修改php链接文件。
创建php5链接
update-alternatives --install <被链接的文件名> <配置名称> <真正执行的二进制文件> <优先级别>
sudo update-alternatives --install /usr/bin/php php /home/kali/php/bin/php 81
使用的时候用–config查找php,并修改即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值