php 安装编译含义,php编译安装

安装开发工具

yum groupinstall "Development Tools" -y

编译(执行./configure)php至少必须要安装一下这两个开发工具

否则会报错: ... required by 'virtual:world', not found ...

等会单独安装其他extension的时候也是,比如要编译openssl,就要提前安装openssl-devel

yum install libxml2-devel sqlite-devel -y

上传php-7.4.9.tar.gz(安装lrzsz传输文件最为方便)

tar工具已经会自动根据压缩格式解压

参见:https://www.cnblogs.com/cursorhu/p/5891699.html

tar xf php-7.4.9.tar.gz

cd php解压目录

fpm不是extension,用--enable选择附上。

--with选项安装extension,也可以参考下半部分单独安装extension

--prefix选项指定安装目录,卸载时直接删掉该目录即可

提前准备好安装目录: mkdir /php

./configure --enable-fpm --prefix=/php

示例:

./configure --prefix=/opt/php-7.4 --with-pdo-pgsql --with-zlib-dir --with-freetype --enable-mbstring --enable-soap --enable-calendar --with-curl --with-zlib --enable-gd --with-pgsql --disable-rpath --enable-inline-optimization --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-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-kerberos --with-gettext --with-xmlrpc --with-xsl --enable-opcache --enable-intl --with-pear --enable-fpm

make

现在可以把之前那两个编译php必须要安装一下这两个开发工具卸载了

yum remove libxml2-devel sqlite-devel -y

make完了没报错说明编译好了,现在把php安装到前面指定的目录

make install

把php.ini这种配置文件从php解压目录下复制到/php/lib里面待会用

一般是php.ini-development和php.ini-production

cp php.ini* /php/lib

因为我们选择了fpm,所以把php-fpm.service放到系统的特定位置,

就可以用systemctl命令控制该后台进程的:systemctl enable --now php-fpm

mv sapi/fpm/php-fpm.service /usr/lib/systemd/system/

待会确认php-fpm的日志是否在/php/var/log

现在php安装好了,但是执行php命令的时候,系统并不知道在哪里找php相关的程序

于是需要修改环境变量:添加刚刚编译好的程序的目录,让该目录成为系统寻找的范围

编辑 /etc/profile

在文件最后添加:

PATH=$PATH:/php/bin

export PATH

完事之后执行source /etc/profile使得刚刚的修改立马生效

参见:https://blog.csdn.net/huangfei711/article/details/53044539

现在执行php --ini查看php会去哪里寻找它的配置文件:

Configuration File (php.ini) Path: /php/lib

Loaded Configuration File: (none)

Scan for additional .ini files in: (none)

Additional .ini files parsed: (none)

结果表明它会在/php/lib里面寻找,

这也是前面把php.ini-development和php.ini-production放在该文件夹下的原因

进入该文件夹

cd /php/lib

视环境复制其中一个为php.ini,比如生产环境:

cp php.ini.production php.ini

再次执行php --ini:

Configuration File (php.ini) Path: /php/lib

Loaded Configuration File: /php/lib/php.ini

Scan for additional .ini files in: (none)

Additional .ini files parsed: (none)

可以看到php已经装载(load)了刚刚复制的配置文件

如果是运行php-fpm,则需要restart或者reload php-fpm才能看到更改

运行php-fpm:

先重命名php安装目录下的etc的php-fpm.conf.default为php-fpm.conf

再重命名php安装目录下的etc/php-fpm.d的www.conf.default为www.conf

最后设置开机启动并立即启动(--now选项):

systemctl enable --now php-fpm

执行systemctl status php-fpm查看php-fpm运行状态

复制php解压目录下的ext目录到/php,为以后单独安装extension做准备

cp -r ext /php

下半部分介绍单独安装php的extension,先执行一下命令告一段落

make distclean

参见:https://www.cnblogs.com/tinywan/p/7230039.html

单独安装php的extension,比如安装zlib

首先进入刚刚复制的/php/ext/zlib目录

可以看到一个config0.m4的文件,如果该目录下

没有一个叫config.m4的文件,只有一个config0.m4的文件

则需要把config0.m4重命名为config.m4

参见:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/255172/

执行phpize,它需要用到刚刚的config.m4文件

现在执行yum install zlib-devel -y 命令安装一个工具,这个工具的目的前面有提到。

执行 ./configure --with-zlib --with-php-config=/php/bin/php-config

其中--with-zlib中的zlib现在安装的是zlib;

--with-php-config参数设置为刚刚安装php的目录下的bin/php-config

记得执行yum remove zlib-devel

完事之后执行make进行编译,编译后会在当前目录下生成一个modules文件夹

里面有个.so文件,这个就是需要的extension

先执行php -m 确认此时还没有zlib这个extension

现在编辑php.ini:

1:指定extension的目录(删除;extension_dir = "ext"那行的;即可)

2: 加入一行extension = zlib.so

在php.ini的那个文件所在的目录创建一个ext目录,用于存放extensions

把刚刚编译出来的zlib.so放到上面的ext目录

再次执行php -m 发现有这个extension了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值