win11结合wsl2搭建开发环境之三:基于wsl子系统Ubuntu24.04,编译安装php5.6
基于wsl子系统Ubuntu24.04,编译安装php5.6
前置准备
安装依赖
apt install unzip \
gcc g++ \
openssl \
libssl-dev \
iptables \
libpcre3 \
libpcre3-dev \
libpam0g-dev \
libxslt1-dev \
libxml2-dev \
perl at gperf \
curl libcurl4t64 libcurl4-openssl-dev \
libzip-dev \
libbz2-dev \
libgd-dev \
libmcrypt-dev libtidy-dev \
libgeoip-dev \
libatomic-ops-dev \
zlib1g \
zlib1g-dev \
libsnmp-dev \
snmp-mibs-downloader \
libgmp-dev \
libfreetype6 \
libfreetype6-dev \
libfreetype-dev \
libc6-dev \
libglib2.0-0t64 \
libglib2.0-dev \
libmhash-dev \
libicu-dev \
libncurses5-dev \
libjpeg-dev \
libpng-dev \
libsqlite3-dev \
libonig-dev \
imagemagick \
libmagickwand-dev \
unixodbc \
unixodbc-dev \
libsodium-dev \
autoconf
mkdir -p /mnt/d/wsl/install
解决一些头部文件依赖不正确
ln -s /usr/include/x86_64-linux-gnu/curl /usr/include/curl
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h
创建用户
创建一个 nginx 用户,为了降低服务器风险,让 nginx 以最小的权限运行
useradd -s /sbin/nologin php
openssl
由于系统默认的openssl版本太高,而php5.6只能依赖1.0.2版本的,因此需要自己编译
wget https://www.openssl.org/source/openssl-1.0.2u.tar.gz
tar zxvf openssl-1.0.2u.tar.gz
cd openssl-1.0.2u
./config --prefix=/usr/local/openssl-1.0.2
make -j$(nproc) && make install -j$(nproc)
php5.6
编译安装
wget https://www.php.net/distributions/php-5.6.40.tar.gz
tar zxvf php-5.6.40.tar.gz
cd php-5.6.40
./configure --prefix=/usr/local/php5.6 \
--with-openssl=/usr/local/openssl-1.0.2 \
--with-gd \
--with-fpm-user=php \
--with-fpm-group=php \
--with-mysqli \
--with-pdo-mysql \
--with-curl \
--with-tidy \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-pear \
--with-jpeg-dir \
--with-png-dir \
--with-freetype \
--with-gettext \
--with-mhash \
--with-pcre-regex \
--with-kerberos \
--with-iconv \
--with-snmp \
--with-gmp \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-mbstring \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvmsg \
--enable-sysvshm \
--enable-wddx \
--enable-xml \
--enable-zip \
--enable-inline-optimization \
--enable-session \
--enable-shared \
--enable-pcntl \
--enable-mbregex \
--enable-gd-jis-conv \
--enable-fpm \
--enable-opcache \
--enable-dba
make -j$(nproc) && make install -j$(nproc)
配置
配置ini
/usr/local/php5.6/bin/php --ini
输出
Configuration File (php.ini) Path: /usr/local/php5.6/lib
说明 php 会自动读取放在 /usr/local/php5.6/lib 的 php.ini 配置文件,那我们下面就把 php.ini 放在 /usr/local/php5.6/lib 里面。
在php的源码目录里面有一个 php.ini-development 文件,将这个文件复制到我们现在所在目录的 lib 文件夹下,命名为 php.ini
cp /mnt/d/wsl/install/php-5.6.40/php.ini-development /usr/local/php5.6/lib/php.ini
然后就可以通过修改 php.ini 来开启各种需要的扩展,修改各种配置了。
配置fpm
cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf
vim /usr/local/php5.6/etc/php-fpm.conf
将一些简单参数写进入
[global]
; 在php-fpm启动后,会将pid写在 /usr/local/php5.6/var/run/php-fpm.pid 这个文件
pid = run/php-fpm.pid
; php-fpm的错误日志
error_log = log/php-fpm.log
; 引入其他配置文件
include=etc/fpm.d/*.conf
其它的,就根据自己来
创建默认的配置文件
mkdir /usr/local/php5.6/etc/fpm.d
touch /usr/local/php5.6/etc/fpm.d/default.conf
文件内容保持空即可
使用systemctl管理
touch /etc/systemd/system/php5.6-fpm.service
vim /etc/systemd/system/php5.6-fpm.service
内容如下
[Unit]
Description=php5.6 fpm
[Service]
ExecStart=/usr/local/php5.6/sbin/php-fpm
ExecStop=kill -SIGINT `cat /usr/local/php5.6/var/run/php-fpm.pid`
ExecReload=/bin/bash -c "kill -SIGUSR2 `cat /usr/local/php5.6/var/run/php-fpm.pid`"
Restart=always
Type=forking
[Install]
WantedBy=multi-user.target
验证 是否正常运行
systemctl daemon-reload
systemctl stop php5.6-fpm
systemctl start php5.6-fpm
systemctl reload php5.6-fpm
systemctl restart php5.6-fpm
systemctl status php5.6-fpm
# 应显示 Active: active (running)
开机自启
systemctl enable php5.6-fpm
使用pecl安装扩展
安装扩展使用/usr/local/php5.6/bin/pecl
获取证书
pecl 安装扩展,是在 http://pecl.php.net/ 查找资源的,下载资源需要用https,下载最新的证书
cd /mnt/d/wsl/install
mkdir cacert
cd cacert
wget http://curl.haxx.se/ca/cacert.pem
查看 php 默认读取的证书位置
/usr/local/php5.6/bin/php -r "print_r(openssl_get_cert_locations());"
我本地输出如下
Array
(
[default_cert_file] => /usr/local/openssl-1.0.2/ssl/cert.pem
[default_cert_file_env] => SSL_CERT_FILE
[default_cert_dir] => /usr/local/openssl-1.0.2/ssl/certs
[default_cert_dir_env] => SSL_CERT_DIR
[default_private_dir] => /usr/local/openssl-1.0.2/ssl/private
[default_default_cert_area] => /usr/local/openssl-1.0.2/ssl
[ini_cafile] =>
[ini_capath] =>
)
第一个参数 [default_cert_file] 就是证书位置。
接下来将下载到的证书复制到对应的位置
cp cacert.pem /usr/local/openssl-1.0.2/ssl/cert.pem
配置pecl
配置 pecl 的 php_ini 路径
/usr/local/php5.6/bin/pear config-set php_ini /usr/local/php5.6/lib/php.ini
安装扩展
mysql
cd /mnt/d/wsl/install/php-5.6.40/ext/mysql
/usr/local/php5.6/bin/phpize
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make && make install
增加配置: /usr/local/php5.6/lib/php.ini
[mysql]
extension="mysql.so"
redis
# 4.3.0是支持php5.6最后的版本
/usr/local/php5.6/bin/pecl install https://pecl.php.net/get/redis-4.3.0.tgz
yac
# 缓存扩展
# 0.9.2是支持php5.6最后的版本
# 以下从pecl安装会报错
/usr/local/php5.6/bin/pecl install https://pecl.php.net/get/yac-0.9.2.tgz
# 只能手动安装
cd /mnt/d/wsl/install/php-5.6.40/ext
wget https://github.com/laruence/yac/archive/yac-0.9.2.tar.gz
tar -xf yac-0.9.2.tar.gz
cd yac-0.9.2
/usr/local/php5.6/bin/phpize
./configure --with-php-config=/usr/local/php5.6/bin/php-config
make && make install
增加配置: /usr/local/php5.6/lib/php.ini
[yac]
extension=yac.so
yac.enable_cli = 1
xdebug
# 2.5.5是支持php5.6最后的版本
/usr/local/php5.6/bin/pecl install https://pecl.php.net/get/xdebug-2.5.5.tgz
增加配置: /usr/local/php5.6/lib/php.ini
[xdebug]
zend_extension="xdebug.so"
; Remote settings
xdebug.remote_autostart=on
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=172.22.240.1
xdebug.remote_port=9001
; General
xdebug.collect_includes=on
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.default_enable=on
xdebug.extended_info=1
xdebug.manual_url=http://www.php.net
xdebug.show_local_vars=0
xdebug.show_mem_delta=1
xdebug.max_nesting_level=120
xdebug.idekey=phpstorm
; Trace options
xdebug.auto_trace=0
xdebug.trace_format=1
xdebug.trace_output_dir=/mnt/d/log/php5.6
xdebug.trace_options=0
xdebug.trace_output_name="xdebug_trace_%t"
; Profiling
xdebug.profiler_enable=0
xdebug.profiler_append=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/mnt/d/log/php5.6
xdebug.profiler_output_name="xdebug_profiler_%t"
特别说明
xdebug.remote_host,该配置不是用localhost或者127.0.0.1。因为是xdebug的监控器,是跑在宿主机win11下的
而宿主机(win11)与wsl(Ubuntu)是处于不同的网络的!!!
宿主机(win11)内部ip

wsl(Ubuntu)内部ip

安装composer
# 支持php5.6的composer是2.2 LTS,其它版本已经不支持了
# 当前选择2.2.25
cd /mnt/d/wsl/install
wget https://github.com/composer/composer/releases/download/2.2.25/composer.phar
mv composer.phar /usr/local/bin/composer56
phpstorm调试
配置cli





配置项目




浙公网安备 33010602011771号