演示环境: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 make
、apt 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)
执行下方语句查询服务器是否安装sqlite3sqlite3 -version
得到的版本是3.16.2,高于 PHP 7.4 要求的 3.7.4,后来知道问题在于缺少sqlite-devel依赖包。
执行下方语句安装sqlite-develsudo 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进程并重新载入配置和二进制模块
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/356/
转载时须注明出处