PHP 8.4 编译部署webman1.6与ThinkPHP 8.1实战教程
PHP 8.4 已于2024年11月21日正式发布。PHP 8.4 是PHP语言的一次重大更新。它包含许多新功能,例如属性钩子、不对称可见性、更新的 DOM API、性能改进、错误修复和常规清理等。
安装 PHP 8.4
下载
wget https://www.php.net/distributions/php-8.4.1.tar.gz
tar -zxvf php-8.4.1.tar.gz
下载地址:https://www.php.net/downloads
安装依赖包
sudo apt-get install libfcgi-dev libfcgi0ldbl libjpeg-turbo8-dev \
libmcrypt-dev libssl-dev libc-client2007e \
libc-client2007e-dev libxml2-dev libbz2-dev \
libcurl4-openssl-dev libjpeg-dev libpng-dev \
libfreetype6-dev libkrb5-dev libpq-dev \
libxml2-dev libxslt1-dev libzip-dev \
libsqlite3-dev libonig-dev pkg-config \
libxml2-dev libkrb5-dev libssl-dev \
libbz2-dev libpng-dev libfreetype6-dev \
libc-client2007e-dev libonig-dev \
libreadline-dev libxslt1-dev libzip-dev
如果安装的依赖包不存在,请通过命令:
apt-cache search freetype
查找相应的安装包安装即可
编译
cd php-8.4.1
sudo ./configure \
--prefix=/usr/local/php-8.4.1 \
--with-config-file-path=/usr/local/php-8.4.1/etc \
--with-freetype \
--enable-mbstring \
--enable-soap \
--enable-calendar \
--with-curl \
--with-zlib \
--enable-gd \
--disable-rpath \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mhash \
--with-zip \
--with-pdo-mysql \
--with-mysqli \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-jpeg \
--with-openssl \
--with-fpm-user=www \
--with-fpm-group=www \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-ftp \
--with-gettext \
--with-xsl \
--enable-opcache \
--enable-intl \
--with-pear \
--enable-fpm
安装
make
make install
安装日志
~/build/php-8.4.1$ sudo make install
Installing shared extensions: /usr/local/php-8.4.1/lib/php/extensions/no-debug-non-zts-20240924/
Installing PHP CLI binary: /usr/local/php-8.4.1/bin/
Installing PHP CLI man page: /usr/local/php-8.4.1/php/man/man1/
Installing PHP FPM binary: /usr/local/php-8.4.1/sbin/
Installing PHP FPM defconfig: /usr/local/php-8.4.1/etc/
Installing PHP FPM man page: /usr/local/php-8.4.1/php/man/man8/
Installing PHP FPM status page: /usr/local/php-8.4.1/php/php/fpm/
Installing phpdbg binary: /usr/local/php-8.4.1/bin/
Installing phpdbg man page: /usr/local/php-8.4.1/php/man/man1/
Installing PHP CGI binary: /usr/local/php-8.4.1/bin/
Installing PHP CGI man page: /usr/local/php-8.4.1/php/man/man1/
Installing build environment: /usr/local/php-8.4.1/lib/php/build/
Installing header files: /usr/local/php-8.4.1/include/php/
Installing helper programs: /usr/local/php-8.4.1/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php-8.4.1/php/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php-8.4.1/lib/php/
[PEAR] Archive_Tar - installed: 1.4.14
[PEAR] Console_Getopt - installed: 1.4.3
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util - installed: 1.4.5
warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.14 is not the recommended version 1.4.4
[PEAR] PEAR - installed: 1.10.15
Wrote PEAR system config file at: /usr/local/php-8.4.1/etc/pear.conf
You may want to add: /usr/local/php-8.4.1/lib/php to your php.ini include_path
配置文件
1、通过命令php -v
查看PHP版本
/usr/local/php-8.4.1/bin/php -v
PHP 8.4.1 (cli) (built: Dec 5 2024 20:08:33) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.4.1, Copyright (c) Zend Technologies
2、核心php.ini
配置文件
cd /home/www/build/php-8.4.1
sudo cp php.ini-production /usr/local/php-8.4.1/etc/php.ini
注意: 如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。 定位到
cgi.fix_pathinfo
并将其修改为如下所示:
cgi.fix_pathinfo=0
3、PHP-FPM 进程服务的配置文件php-fpm.conf
cd /usr/local/php-8.4.1/etc
cp php-fpm.conf.default php-fpm.conf
4、PHP-FPM 扩展配置文件www.conf
cd /usr/local/php-8.4.1/etc/php-fpm.d
cp www.conf.default www.conf
用户和用户组配置
配置/usr/local/php-8.4.1/etc/php-fpm.d/www.conf
user = www
group = www
listen.owner = www
listen.group = www
listen.mode = 0660
给www
用户组分配权限(非必须)
chown www:www /usr/local/php-8.4.1/etc/php-fpm.d/www.conf
修改fpm监听的端口
; listen = 127.0.0.1:9000 -- 默认是打开的,在前面加; 注释掉
listen = /var/run/php8.4.1-fpm.sock -- 添加这一行
创建系统单元文件
接下来,我们将创建系统单元文件,该文件用于启动和停止PHP-FPM守护程序。
1、添加服务
vim /lib/systemd/system/php-8.4.1-fpm.service
具有以下内容:
[Unit]
Description=The PHP 8.4.1 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php-8.4.1/var/run/php-fpm.pid
ExecStart=/usr/local/php-8.4.1/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php-8.4.1/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
2、启用服务并重新加载systemd
sudo systemctl enable php-8.4.1-fpm.service
Created symlink /etc/systemd/system/multi-user.target.wants/php-8.4.1-fpm.service → /usr/lib/systemd/system/php-8.4.1-fpm.service.
sudo systemctl daemon-reload
3、启动PHP-FPM
服务
sudo systemctl start php-8.4.1-fpm.service
4、查看PHP-FPM
服务状态
sudo systemctl status php-8.4.1-fpm.service
● php-8.4.1-fpm.service - The PHP 8.4.1 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-8.4.1-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-12-05 20:39:14 CST; 5s ago
Main PID: 432653 (php-fpm)
Tasks: 3 (limit: 98627)
Memory: 11.7M
CGroup: /system.slice/php-8.4.1-fpm.service
├─432653 php-fpm: master process (/usr/local/php-8.4.1/etc/php-fpm.conf)
├─432654 php-fpm: pool www
└─432655 php-fpm: pool www
Dec 05 20:39:14 Tinywan systemd[1]: Started The PHP 8.4.1 FastCGI Process Manager.
5、开机自启动
sudo systemctl enable php-8.4.1-fpm.service
安装composer
wget https://getcomposer.org/download/latest-stable/composer.phar
查看composer -v
版本,出现以下界面表示安装成功
/usr/local/php-8.4.1/bin/php composer.phar -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.8.3 2024-11-17 13:13:04
安装 Webman 1.6
https://www.workerman.net/doc/webman/install.html
创建项目
/usr/local/php-8.4.1/bin/php composer.phar create-project workerman/webman webman1.6
Creating a "workerman/webman" project at "./webman1.6"
Installing workerman/webman (v1.6.3)
- Downloading workerman/webman (v1.6.3)
- Installing workerman/webman (v1.6.3): Extracting archive
Created project in /var/www/webman/webman1.6
Loading composer repositories with package information
Updating dependencies
Lock file operations: 6 installs, 0 updates, 0 removals
- Locking monolog/monolog (2.10.0)
- Locking nikic/fast-route (v1.3.0)
- Locking psr/container (2.0.2)
- Locking psr/log (3.0.2)
- Locking workerman/webman-framework (v1.6.6)
- Locking workerman/workerman (v4.2.1)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 6 installs, 0 updates, 0 removals
- Installing psr/log (3.0.2): Extracting archive
- Installing monolog/monolog (2.10.0): Extracting archive
- Installing workerman/workerman (v4.2.1): Extracting archive
- Installing psr/container (2.0.2): Extracting archive
- Installing nikic/fast-route (v1.3.0): Extracting archive
- Installing workerman/webman-framework (v1.6.6): Extracting archive
> support\Plugin::install
> support\Plugin::install
> support\Plugin::install
> support\Plugin::install
> support\Plugin::install
> support\Plugin::install
Create start.php
Create windows.php
Create support/bootstrap.php
Create support/helpers.php
10 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
2 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
启动项目
/usr/local/php-8.4.1/bin/php start.php start
Workerman[start.php] start in DEBUG mode
------------------------------------------- WORKERMAN -------------------------------------------
Workerman version:4.2.1 PHP version:8.4.1 Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS --------------------------------------------
proto user worker listen processes status
tcp root webman http://0.0.0.0:8289 24 [OK]
tcp root monitor none 1 [OK]
-------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
访问项目

安装 ThinkPHP8.1
官方安装文档:https://doc.thinkphp.cn/v8_0/setup.html
注意:这里由于有多套环境,所以安装需要指定PHP绝对路径
创建项目
/usr/local/php-8.4/bin/php composer.phar create-project topthink/think tp8.1
Creating a "topthink/think" project at "./tp8.1"
Installing topthink/think (v8.1)
- Downloading topthink/think (v8.1)
- Installing topthink/think (v8.1): Extracting archive
Created project in /var/www/webman/tp8.1
Loading composer repositories with package information
Updating dependencies
Lock file operations: 15 installs, 0 updates, 0 removals
- Locking league/flysystem (1.1.10)
- Locking league/flysystem-cached-adapter (1.1.0)
- Locking league/mime-type-detection (1.16.0)
- Locking topthink/framework (v8.1.1)
- Locking topthink/think-filesystem (v2.0.3)
- Locking topthink/think-helper (v3.1.10)
- Locking topthink/think-orm (v3.0.30)
- Locking topthink/think-trace (v1.6)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 15 installs, 0 updates, 0 removals
- Downloading psr/cache (1.0.1)
- Installing psr/log (3.0.2): Extracting archive
- Installing topthink/think-orm (v3.0.30): Extracting archive
- Installing topthink/framework (v8.1.1): Extracting archive
- Installing league/flysystem (1.1.10): Extracting archive
- Installing league/flysystem-cached-adapter (1.1.0): Extracting archive
- Installing topthink/think-filesystem (v2.0.3): Extracting archive
- Installing topthink/think-trace (v1.6): Extracting archive
12 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
> @php think service:discover
Succeed!
> @php think vendor:publish
File /var/www/webman/tp8.1/config/trace.php exist!
Succeed!
4 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
Nginx 主机配置
server {
listen 80;
server_name 121.128.128.128;
set $root_path /home/www/build/tp8.1/public;
root $root_path;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ \.php$ {
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/php8.4.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_connect_timeout 10000;
fastcgi_send_timeout 6000;
fastcgi_read_timeout 6000;
}
}
访问项目
访问该服务器公网IP,如:http://121.128.128.128 ,看到以下界面表示安装成功啦!
