PHP
• 网站管理员 Published the article • 2 comments • 852 views • 2019-04-03 18:44
• 来自相关话题
### 背景
由于Ubuntu引导区坏了,无法找回boot中的文件,只能重新在虚拟机上重装系统,配置php的环境。
开始学php的时候我比较喜欢折腾源码,编译安装,期间走过很多的坑,这样会有一个问题,比如你需要添加一个扩展的时候你又需要编译一下扩展,有的时候编译源码的时候忘了编译某个模块就需要重新编译源码,比如thread模块,累了倦了,于是就开始用集成环境,或者用源安装。
### 问题
网上有很多的教程,千篇一律,无非都是这里这里复制那里粘贴的,遇到一些细节的问题,就懵逼了。
网上关于Ubuntu用软件源安装php7.2的教程是:
```bash
wget /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg
sh -c 'echo "deb https://mirror.xtom.com.hk/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update
apt install php7.2-fpm php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache -y
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.2/fpm/php.ini
systemctl restart php7.2-fpm
```
### 解决方案
> 但是这里有些问题:
1. $(lsb_release -sc) 返回的是```zesty```,但是战源根本就没有这个目录,所以这里我们需要写死
. ```sh -c 'echo "deb https://mirror.xtom.com.hk/sury/php/ jessie main" > /etc/apt/sources.list.d/php.list'```
2. 安装php7.2-gd的时候出现如下问题:
```
The following packages have unmet dependencies:
php7.2-gd : Depends: libjpeg62-turbo (>= 1.3.1) but it is not installable
E: Unable to correct problems, you have held broken packages.
root@ubuntu:/mnt# apt-get install libjpeg62-tuls
Reading package lists... Done
Building dependency tree
Reading state information... Done
```
从```https://packages.debian.org/je ... nload```上下载libjpeg62-turbo的deb
```bash
cd /mnt
wget http://security.debian.org/deb ... 6.deb
dpkg -i libjpeg62-turbo_1.3.1-12+deb8u2_i386.deb
apt-get install php7.2-gd
```
### 思考
> 出现问题的时候我们很依赖搜索引擎来帮我们处理问题,有的时候我们很难集中注意力去审查问题,搜索引擎搜索一通之后,发现网上的教程或者解决方案千篇一律,甚至无法解决你的问题。浪费时间和精力。
> 这个时候我们需要静下心来想这个问题,是否以前遇到相同的问题,是否能够举一反三。 查看全部
### 背景
由于Ubuntu引导区坏了,无法找回boot中的文件,只能重新在虚拟机上重装系统,配置php的环境。
开始学php的时候我比较喜欢折腾源码,编译安装,期间走过很多的坑,这样会有一个问题,比如你需要添加一个扩展的时候你又需要编译一下扩展,有的时候编译源码的时候忘了编译某个模块就需要重新编译源码,比如thread模块,累了倦了,于是就开始用集成环境,或者用源安装。
### 问题
网上有很多的教程,千篇一律,无非都是这里这里复制那里粘贴的,遇到一些细节的问题,就懵逼了。
网上关于Ubuntu用软件源安装php7.2的教程是:
```bash
wget /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg
sh -c 'echo "deb https://mirror.xtom.com.hk/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt-get update
apt install php7.2-fpm php7.2-mysql php7.2-curl php7.2-gd php7.2-mbstring php7.2-xml php7.2-xmlrpc php7.2-zip php7.2-opcache -y
sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php/7.2/fpm/php.ini
systemctl restart php7.2-fpm
```
### 解决方案
> 但是这里有些问题:
1. $(lsb_release -sc) 返回的是```zesty```,但是战源根本就没有这个目录,所以这里我们需要写死
. ```sh -c 'echo "deb https://mirror.xtom.com.hk/sury/php/ jessie main" > /etc/apt/sources.list.d/php.list'```
2. 安装php7.2-gd的时候出现如下问题:
```
The following packages have unmet dependencies:
php7.2-gd : Depends: libjpeg62-turbo (>= 1.3.1) but it is not installable
E: Unable to correct problems, you have held broken packages.
root@ubuntu:/mnt# apt-get install libjpeg62-tuls
Reading package lists... Done
Building dependency tree
Reading state information... Done
```
从```https://packages.debian.org/je ... nload```上下载libjpeg62-turbo的deb
```bash
cd /mnt
wget http://security.debian.org/deb ... 6.deb
dpkg -i libjpeg62-turbo_1.3.1-12+deb8u2_i386.deb
apt-get install php7.2-gd
```
### 思考
> 出现问题的时候我们很依赖搜索引擎来帮我们处理问题,有的时候我们很难集中注意力去审查问题,搜索引擎搜索一通之后,发现网上的教程或者解决方案千篇一律,甚至无法解决你的问题。浪费时间和精力。
> 这个时候我们需要静下心来想这个问题,是否以前遇到相同的问题,是否能够举一反三。