## 1、下载PHP源代码
首先需要从PHP官网下载PHP7.3.6的源代码,[点击下载]() 下载到自己存放的目录当中
![](https://i.vgy.me/vmAxnF.png)
![](https://i.vgy.me/o5rdDv.png)
```
解压
tar -zxf php-7.3.6.tar.gz
进入目录
cd php-7.3.6
```
## 2、安装依赖
```
sudo apt update
sudo apt install gcc
sudo apt install make
sudo apt install openssl
sudo apt install curl
sudo apt install libbz2-dev
sudo apt install libxml2-dev
sudo apt install libjpeg-dev
sudo apt install libpng-dev
sudo apt install libfreetype6-dev
sudo apt install libzip-dev
```
>[danger] 安装好这些依赖,可能还会出现一些依赖不存在的错误,到时候有什么提示错误,百度搜索安装即可
## 3、配置PHP
```
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysqli --with-pdo-mysql --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --disable-fileinfo --enable-maintainer-zts
```
>[success] +--------------------------------------------------------------------+| License: || This software is subject to the PHP License, available in this || distribution in the file LICENSE. By continuing this installation || process, you are bound by the terms of this license agreement. || If you do not agree with the terms of this license, you must abort || the installation process at this point. |+--------------------------------------------------------------------+
> Thank you for using PHP.
> 在这一步中,如果出现无法找到某个依赖的情况,可以尝试使用sudo apt install来重新安装一下没有找到的依赖
```
configure: error: Cannot find OpenSSL's
這個問題是缺少openssl-devel apt-get install libssl-dev 安裝即可
checking for cURL 7.15.5 or greater... configure: error: cURL version 7.15.5 or later is required to compile php with cURL support
這個問題是cURL版本問題解除安裝重灌下curl就好了 sudo apt-get install curl libcurl3 libcurl3-dev
configure: error: DBA: Could not find necessary header file(s).
網上找了半天都說是少了這個包 libdb-dev 我的卻不行 安裝 libgdbm-dev 這個包才ok
Configure: error: libpng.(also) not found.
apt-get install libjpeg-dev libpng-dev
configure: error: freetype-config not found.
apt-get -y install libfreetype6-dev
configure: error: Please reinstall the libzip distribution
apt install libzip-dev
```
>[danger] 途中可能出现N种错误,但是不要慌,百度谷歌慢慢搞!!!
## 4、编译并安装PHP
在完成配置后,可以直接使用make来进行编译,可以使用参数-j来指定编译线程数量来多线程编译
```
make -j4
```
编译需要一段比较长的时间,请稍作等待,编译成功后会输出如下内容
```
Build complete.Don't forget to run 'make test'.
```
然后执行以下命令进行安装
```
sudo make install
```
执行完成后,PHP将会被安装到
```
/usr/local/php/
```
## 5、验证PHP
可以使用如下指令来输出PHP的版本,来验证是否正确安装
```
/usr/local/php/bin/php -v
```
如果正确安装,将会出现如下内容
```
PHP 7.3.1 (cli) (built: Jan 18 2019 20:11:04) ( ZTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.3.1, Copyright (c) 1998-2018 Zend Technologies
```
到这一步为止,PHP7.3.1便成功从源代码编译安装了。
## 6、复制php.ini
编译安装后的目录并不会有现成的php.ini,需要手动复制过去。在解压出来的源代码目录中,有供开发环境使用的php.ini-development和供生产环境使用的php.ini-production。输入命令来复制(以开发环境为例)
```
sudo cp php.ini-development /usr/local/php/etc/php.ini
```
![](https://i.vgy.me/zsUCgG.png)
### 附上查阅资料的网站链接
>[info] Ubuntu 安裝php 7.3遇到的錯誤:[https://www.itread01.com/content/1541669590.html](https://www.itread01.com/content/1541669590.html)
> php编译错误总结:[https://zhuanlan.zhihu.com/p/62145198](https://zhuanlan.zhihu.com/p/62145198)
> 我在编译安装 PHP 时,遇到了 “freetype-config not found”的问题:[https://www.doopsky.com/ops/981.html](https://www.doopsky.com/ops/981.html)
> ubuntu源码编译安装php常见错误解决办法:[https://blog.csdn.net/white\_\_cat/article/details/28907535](https://blog.csdn.net/white__cat/article/details/28907535)
> 安装php过程中的错误和解决方式 configure: error: jpeglib.h not found:[https://www.cnblogs.com/flywang/p/5256356.html](https://www.cnblogs.com/flywang/p/5256356.html)
> deepin下安装curl 附 CURL常用命令:[https://blog.csdn.net/jkxqj/article/details/52891090](https://blog.csdn.net/jkxqj/article/details/52891090)
## 7、启动php-fpm
```
/usr/local/php/sbin/php-fpm
```
>[danger] ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)
> ERROR: failed to load configuration file '/private/etc/php-fpm.conf'
> ERROR: FPM initialization failed
> 启动就会报错,是因为在php的etc目录下面没有php-fpm.conf这个文件,我们需要在etc目录下复制一个
```
cp php-fpm.conf.default php-fpm.conf
#再次运行检查
/usr/local/php/sbin/php -t
```
>[danger] \[27-Jun-2019 22:19:57\] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/\*.conf' from /usr/local/php/etc/php-fpm.conf at line 143.
> \[27-Jun-2019 22:19:57\] ERROR: No pool defined. at least one pool section must be specified in config file
> \[27-Jun-2019 22:19:57\] ERROR: failed to post process the configuration
> \[27-Jun-2019 22:19:57\] ERROR: FPM initialization failed
> 检查又报错了,是因为我们include没找到.conf文件,在php-fpm.d当中时 www.conf.default这个文件我们需要修改复制出来的php-fpm.conf的include
![](https://i.vgy.me/gQAVJM.png)