# 下载 php 源码

首先到 www.php.net下 载 php 源码,最新版是 8.3.2 , 那我们就下载最新版本,另外也下载 php-7.4.33 (wordpress 博客只能使用 php7.4)

www.php.net

# 安装编译 php 必要的库

# 使用 yum 安装

首先使用 yum 安装必要的一些库

h
yum -y install sqlite-devel \
libcurl-devel \
libffi-devel \
gmp-devel \
libicu-devel \
openssl \
openssl-devel \
readline-devel \
net-snmp-devel \
libzip-devel

# 安装 oniguruma

oniguruma 是一个处理正则表达式的库, mbstring 的正则功能需要 oniguruma 的支持,我们需要安装该库.

下载地址:https://github.com/kkos/oniguruma/releases/tag/v6.9.9

下载下来之后解压,然后进入目录,执行编译

./configure --prefix=/usr --libdir=/lib64
make && make install
# 配置动态库的路径
export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/

# 到 php 源码目录下执行编译

然后进入到 php 源码目录下进行编译

h
./configure \
--prefix=/usr/local/php \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--disable-debug \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-opcache \
--with-pcre-jit   \
--with-openssl \
--with-bz2 \
--with-iconv \
--with-zlib \
--enable-gd \
--with-jpeg \
--with-freetype \
--with-gettext \
--with-curl \
--enable-sockets \
--with-snmp \
--with-zip \
--with-zlib \
--enable-mbstring \
--disable-rpath \
--enable-shared  \
--with-mhash \
--with-sqlite3 \
--enable-bcmath \
--enable-calendar \
--with-cdb \
--enable-dom \
--enable-exif \
--enable-fileinfo \
--enable-filter \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--enable-mbregex \
--enable-pdo \
--with-pdo-sqlite \
--with-readline \
--enable-session \
--enable-shmop \
--enable-xml \
--enable-simplexml \
--enable-sockets  \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-xsl \
--enable-mysqlnd-compression-support \
--with-pear \
--with-ffi \
--enable-intl \
CFLAGS="-fPIE" \
CXXFLAGS="-fPIC" \
LDFLAGS="-pie"

显示如下图片即代表编译检查通过

图片

下面执行 make -j 2 && make install

等待编译安装完成 (大约 15-20 分钟左右)

中途可能会报类似以下这样的错误,在 configure 的时候加入 CFLAGS="-fPIE" CXXFLAGS="-fPIC" LDFLAGS="-pie" 或者 make 的时候不加 -j 参数就好

h
/usr/bin/ld: dynamic STT_GNU_IFUNC symbol `mb_utf16be_to_wchar' with pointer equality in `ext/mbstring/libmbfl/filters/mbfilter_utf16.o' can not be used when making an executable; recompile with -fPIE and relink with -pie
collect2: error: ld returned 1 exit status
make: *** [Makefile:313: sapi/cli/php] Error 1

显示如下内容即代表编译安装成功

图片

# 配置 PHP

将 php 的配置文件复制到指定目录

cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

修改 /usr/local/php/lib/php.ini 文件,将 data.timezone 修改为 Asia/Shanghai

# 启动 php-fpm

php 的执行文件在 sbin 下的 php-fpm, 直接运行就行了,会默认监听 9000 端口

# 修改 nginx 配置显示 phpinfo 页面

修改 nginx.conf 文件,有一段 php 的配置是被注释的,将注释去掉,并且修改 /scripts/$DOCUMENT_ROOT , 然后保存退出

h
location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $DOCUMENT_ROOT$fastcgi_script_name;
    include        fastcgi_params;
}

在 nginx/html 下创建一个 phpinfo.php 文件,内容如下:

p
<?php 
phpinfo();

访问浏览器 http://{服务器的ip}/phpinfo.php , 看到如下页面

php

接下来编译安装 7.4 版本也是一样的流程,只不过需要改一下 www.conf 文件里的 listen, 改成 9001 或者其他端口号即可

# 安装 swoole 及 redis 扩展

安装扩展很容易,可以进入到安装好的 php 目录下,执行 ./bin/pecl install swoole 即可,安装完之后在 php.ini 中添加 extension=swoole.so

redis 扩展同理

# 安装 composer

composer 相当于 node 里的 npm, 重要性不言而喻,所以必须也要装上

首先将 php 加入到环境变量中

#/etc/profile.d/web.sh
export PATH="/usr/local/php/bin:/usr/local/redis/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/node/bin:$PATH"

执行 source /etc/profile 使配置生效

安装 composer, 执行以下 3 条命令即可

php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"

然后将 composer.phar 放到 /usr/local/php/bin 目录下,并重命名为 composer

mv composer.phar /usr/local/php/bin/composer

然后试一试 composer --version

修改 composer 的国内镜像

composer config -g repo.packagist composer https://packagist.phpcomposer.com

# 将 php-fpm 加入到 systemd 服务,并设置开机启动

编写 /etc/systemd/system/php-fpm.service 文件

#/etc/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
After=nginx.service
[Service]
Type=simple
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -INT $MAINPID
[Install]
WantedBy=multi-user.target

执行

h
systemctl start php-fpm
systemctl enable php-fpm

# 结束

至此,PHP8.3.2 基本的运行环境已经安装完成了,后期再针对服务器对 php 进行优化配置

请我喝杯[咖啡]~( ̄▽ ̄)~*

一个放羊娃 微信支付

微信支付

一个放羊娃 支付宝

支付宝