# 下载 php 源码
首先到 www.php.net下
载 php 源码,最新版是 8.3.2
, 那我们就下载最新版本,另外也下载 php-7.4.33
(wordpress 博客只能使用 php7.4)
www.php.net
# 安装编译 php 必要的库
# 使用 yum 安装
首先使用 yum 安装必要的一些库
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 源码目录下进行编译
./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
参数就好
/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
, 然后保存退出
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
文件,内容如下:
<?php | |
phpinfo(); |
访问浏览器 http://{服务器的ip}/phpinfo.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 |
执行
systemctl start php-fpm | |
systemctl enable php-fpm |
# 结束
至此,PHP8.3.2 基本的运行环境已经安装完成了,后期再针对服务器对 php 进行优化配置