Debian 源码编译安装 PHP 7.4.3

演示环境:Linux OP-PAR-E3 4.9.0-11-amd64 #1 SMP Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64
PHP版本:php-7.4.3.tar.gz (sig) [16,086Kb] sha256:58e421a1dba10da8542a014535cac77a78f0271afb901cc2bd363b881895a9ed
下载链接:https://www.php.net/distributions/php-7.4.3.tar.gz

准备工作

  • 输入命令:su,输入密码,切换到roo登录
  • 更新软件包:apt update
  • 安装依赖包:apt install gcc makeapt install libxml2 libxml2-dev

源码安装php-7.4.3.tar.gz

安装命令

mkdir /source/
mkdir /web/
cd /source
wget https://www.php.net/distributions/php-7.4.3.tar.gz
tar -zxvf php-7.4.3.tar.gz
cd php-7.4.3
./configure --prefix=/web/php --with-config-file-path=/web/php/etc --enable-fpm --enable-mbstring --with-mysqli --with-pdo-mysql
make && make install

解释:
--with-config-file-path //配置文件所在目录
--enable-fpm //启用php-fpm模块(推荐)
--enable-mbstring //启用mbstring模块(推荐)
--with-mysqli //打开mysqli模块
--with-pdo-mysql //pdo_mysql模块
至此,php-7.4.3安装完成。

添加php命令到Linux环境变量

编辑文件:vi /etc/profile,在文件结尾添加一行:
export PATH="/web/php/bin:$PATH"
然后让环境变量生效:source /etc/profile

也可以创建软连接:

ln -s /web/php/bin/php /usr/bin/php;
ln -s /web/php/bin/phar.phar /usr/bin/phar;
ln -s /web/php/bin/phpize /usr/bin/phpize;
ln -s /web/php/bin/php-config /usr/bin/php-config;
ln -s /web/php/bin/phpdbg /usr/bin/phpdbg;
ln -s /web/php/bin/php-cgi /usr/bin/php-cgi;

同样可以作为默认的php环境

root@OP-PAR-E3:~$ php -v
PHP 7.4.3 (cli) (built: Feb 21 2020 00:53:18) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

配置php-fpm

copy默认配置文件

cd /source/php-7.4.3
cp php.ini-development /web/php/etc/php.ini

cd /web/php/etc
cp php-fpm.conf.default php-fpm.conf

cd /web/php/etc/php-fpm.d/
cp www.conf.default www.conf

修改php-fpm.conf

说明:为了可以使用信号命令。
找到以下字段
;pid = run/php-fpm.pid
修改成
pid = run/php-fpm.pid
保存

修改www.conf

groupadd web
useradd -g web nginx -M -s /sbin/nologin

找到以下字段
user = nobody
group = nobody

修改成
user = nginx
group = www
保存


安装php扩展(可选)

上面的方法是将所以扩展都编译在一起。这里是单独编译,然后加入php.ini文件,自由度更高。
安装必须
apt install autoconf //php扩展编译需要

/source/php-7.4.3/ext你会看到很多的文件夹。需要什么扩展就进入哪个文件夹,运行如下命令。

/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config
make && make install

以安装curl扩展为例

1、 进入到php源码目录下的扩展库目录的curl目录(源码目录是当时安装php时使用的源码的目录,如果删除了,可以去php官方重新下载解压)。
2、 调用phpize程序生成编译配置文件,这个工程你可能会产生一些错误,主要是因为你的系统里缺少一些库,按照提示安装缺失的库就可以,调用phpize程序后可以看到多出了几个文件。
3、 调用configure生成Makefile文件,--with-php-config的值是:php安装路径/bin/php-config
4、 出现Makefile文件后然后调用make编译,make install安装,如果没有生成Makefile文件,就是系统缺失库,根据提示安装后再次执行configure命令即可。


curl扩展

命令流程:

cd php-7.4.3/ext/curl
/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config
make && make install

出现下图说明安装成功:

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:   /web/php/lib/php/extensions/no-debug-non-zts-20190902/

编辑配置文件:php.ini,把扩展路径加入进去:

extension_dir = "/web/php/lib/php/extensions/no-debug-non-zts-20190902/"
extension=curl.so


phpredis扩展

[官方网站] http://pecl.php.net/package/redis
命令流程:

cd /source/
提示:可以安装最新版本
wget http://pecl.php.net/get/redis-3.1.4.tgz
tar -zxf redis-3.1.4.tgz
cd redis-3.1.4
/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config
make && make install

openssl扩展

命令流程:

cd /source/php-7.4.3/ext/openssl
cp config0.m4 config.m4
ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib
/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config
make && make install

gd扩展

命令流程:

apt install libpng-dev
apt install libfreetype6 libfreetype6-dev
cd /source/php-7.4.3/ext/gd
/web/php/bin/phpize
./configure --with-php-config=/web/php/bin/php-config --with-freetype-dir
make && make install

--with-freetype-dir //打开gd库对freetype字体库的支持。


常见问题

问题一 No package 'sqlite3' found

No package 'sqlite3' found
Package requirements (sqlite3 > 3.7.4)

执行下方语句查询服务器是否安装sqlite3
sqlite3 -version

得到的版本是3.16.2,高于 PHP 7.4 要求的 3.7.4,后来知道问题在于缺少sqlite-devel依赖包。
执行下方语句安装sqlite-devel
sudo apt-get install sqlite3 libsqlite3-dev

问题二 No package 'oniguruma' found

No package 'oniguruma' found

类似问题一,缺少oniguruma,执行下方语句编译,来源:https://amon.org/oniguruma

git clone https://github.com/kkos/oniguruma.git oniguruma
cd oniguruma
./autogen.sh
./configure
make
make install

附、常用命令

php-fpm常用命令

/web/php/sbin/php-fpm -c /web/php/etc/php.ini  //启动php-fpm
kill -SIGUSR2 `cat /web/php/var/run/php-fpm.pid` //重启php-fpm
kill -SIGINT `cat /web/php/var/run/php-fpm.pid`  //关闭php-fpm

信号解释:
SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块

最后修改:2020 年 02 月 21 日 03 : 00 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论