跳到主要内容
异次元店铺1 手动编译 PHP 8.0:不用面板的部署方式
异次元店铺1 /环境搭建

手动编译 PHP 8.0:不用面板的部署方式

面板很方便,但它会往系统里塞不少东西。如果你的服务器还跑着别的服务,或者你要做成可复用的镜像,手动编译更可控。

依赖

sudo apt update
sudo apt install -y build-essential autoconf bison re2c \
    libxml2-dev libsqlite3-dev libssl-dev libcurl4-openssl-dev \
    libonig-dev libzip-dev libpng-dev libjpeg-dev libfreetype6-dev

编译

wget https://www.php.net/distributions/php-8.0.30.tar.gz
tar -zxf php-8.0.30.tar.gz && cd php-8.0.30

./configure --prefix=/usr/local/php80 \
    --with-config-file-path=/usr/local/php80/etc \
    --enable-fpm --with-fpm-user=www --with-fpm-group=www \
    --enable-mbstring --enable-sockets --enable-bcmath \
    --with-openssl --with-curl --with-zip \
    --with-pdo-mysql --with-mysqli \
    --enable-gd --with-jpeg --with-freetype \
    --enable-opcache --enable-fileinfo

make -j$(nproc) && sudo make install

-j$(nproc) 会用满所有核心,2 核机器大约 8 分钟。

:::info 为什么是这些参数 bcmath 是订单金额计算要用的;fileinfo 是上传校验要用的;pdo-mysql 不用多说。少任何一个,程序都会在某个具体功能上报错而不是启动时报错,所以一次配齐比较省事。 :::

配置文件

sudo cp php.ini-production /usr/local/php80/etc/php.ini
sudo cp /usr/local/php80/etc/php-fpm.conf.default /usr/local/php80/etc/php-fpm.conf
sudo cp /usr/local/php80/etc/php-fpm.d/www.conf.default /usr/local/php80/etc/php-fpm.d/www.conf

php.ini 里至少改这几项:

post_max_size = 32M
upload_max_filesize = 32M
max_execution_time = 300
date.timezone = Asia/Shanghai
disable_functions =

最后一行留空——生产环境通常会禁用一批函数,但本程序需要其中几个,与其一个个挑不如先留空跑通,之后再按需收紧。

开机自启

sudo cp sapi/fpm/php-fpm.service /etc/systemd/system/
sudo systemctl enable --now php-fpm

php -v 确认版本,接下来照常配 Nginx 就行。

评论 0

目录
登录 / 注册 登录后可点赞与评论
风格
明暗
语言
风格
明暗
语言