那些工作了好些年的PHP开发者,对源码编译安装这种操作感到生疏,在实际的服务器环境管理里头它是个明显的缺点,于性能优化方面同样是个明显的不足。

通过源码安装,能够让你对PHP的版本、编译参数以及扩展集成得到完全的掌控,比如说,在生产环境里,你有需求为PHP 7.3添加特定的加密扩展,然而系统仓库却并未提供,在这种情况下,源码编译就变成为唯一的选择了,它能够避免二进制包所带来的依赖冲突现象,使你可以针对当前服务器的CPU架构来开展优化工作,进而直接提升程序的执行效率。

当你理解了其具有的价值以后,你要去预备一个洁净的Linux环境,比如像是CentOS 7.4这样子的,又或者是Ubuntu 18.04那样子的。一定要在提前的时候去完成开发工具集的安装,举例来说,像是借助yum groupinstall ‘Development Tools’这种方式,又或者是通过apt-get install build-essential这种途径,以此来得到gcc、make等这些必备的工具。与此同时,还需要去安装PHP所依赖的库,像是libxml2-devel以及openssl-devel这样的。

前往PHP官方网站的下载页面,挑选稳定版本,像PHP 7.4.28 ,运用wget命令于服务器直接下载 ,举例来说wget https://www.php.net/distributions/php-7.4.28.tar.gz ,下载完毕后 ,借助tar -zxvf php-7.4.28.tar.gz解压至当前目录 。

踏入解压过后的源码目录,这乃是用于做配置以及进行编译的起始点。于这个目录范围之内,你会去执行具有关键性质的配置命令,以此来决定PHP最终所具备的功能情况。建议先借助./configure --help此命令去查看全部得以用到的编译选项,这能够协助你明白后续每一步参数设置当中具体所蕴含的意义。

关键的重要一步是配置,其对PHP的功能范围予以定义。一个基础的生产环境配置大概会是这样:./configure --prefix=/usr/local/php74 ,--with-config-file-path=/usr/local/php74/etc ,--enable-fpm ,--with-mysqli ,--with-pdo-mysql ,--with-openssl 。在这儿,–prefix用于指定安装的路径,–enable-fpm是为了给Nginx集成做相应的准备工作 。

你或许会碰到依赖库缺失这种会出现的状况,这属于常见的问题范畴。比如说,假设报错给出缺少libjpeg的提示,那你就得依据系统去运用yum或者apt-get来安装与之对应的开发包,像那个libjpeg-turbo-devel这个样子。一定要依据配置阶段所给出的错误提示,一一对缺失的库进行安装,一直到配置命令能够成功完结为止。

当配置成功之后,去运行make命令,以此来开启编译源代码的操作。此过程会把C语言源码转变为能够执行的二进制文件,一般而言需要5到15分钟,这是依据服务器CPU的核心数以及性能来决定的。你能够使用make -j4,从而借助多核CPU实现编译加速。

编译器在无误完成编译之后,去执行sudo make install这个操作把已编译好的那些文件安装到早前通过–prefix所指定的那个目录,像/usr/local/php74这种。等到此时,PHP的主要程序php以及PHP-FPM程序sbin/php-fpm就已然被安装到系统的binsbin目录之下了。

倘若要使得Nginx能够对PHP脚本予以处理,那就需要去对PHP-FPM进行配置,首要的是复制源码包里的配置文件,具体操作是执行cp php.ini-production /usr/local/php74/etc/php.ini,接着还要复制FPM的配置文件,具体做法是执行cp /usr/local/php74/etc/php-fpm.conf.default /usr/local/php74/etc/php-fpm.conf

首先进行Nginx站点配置文件的编辑操作,于专门处理.php请求的那个location块之内,添加这么一行内容:fastcgi_pass unix:/usr/local/php74/var/run/php-fpm.sock; 然后启动PHP-FPM服务,具体指令为:/usr/local/php74/sbin/php-fpm 接着重启Nginx,如此一来便能够完成整合工作了。

安装后,在网站根目录创建info.php,内容为浏览器经由该路径去访问那个文件,要是能够展示详尽的 PHP 配置信息表,那么就表明安装达成预期状态。此张表格之中应该涵盖编译处理时开启启用的全部模块信息,像 mysqli 、openssl 等相关内容。

要是访问呈现出502错误这种状况,一般而言便是PHP – FPM没启动或者socket路径不一致。去检查进程ps aux | grep php-fpm,并且要确认在Nginx配置里的sock文件路径跟php-fpm.conflisten指令的路径是完全一样的。权限方面的问题同样有可能致使失败,得确保Nginx工作用户(像www-data)有权利去访问那个socket文件。

当你于源码方式去安装PHP之际,所碰到的最为棘手的依赖或者配置方面的问题究竟是什么,又是怎样将其解决的呢,欢迎在评论区域分享你的经验,设若觉得本文具备帮助作用,请通过点赞的方式予之支持 。

隐藏内容---克隆本站只需399元。
本内容购买后下载---支持免登录购买下载---
( 几百套各种VIP源码一次性下载 )每人限购一次。 
  • 普通用户: 5 积分
  • VIP会员: 5 积分
  • 永久VIP会员: 免费

声明:本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:785557022@qq.com