关于make install 更新软件相关的环境变量问题

起因以及相关问题

概述: 大概就是通过编译安装更新php版本 5.3.3 >>> 5.6.30


jpg

jpg

问下php安装成功后怎么查看版本信息还是原来的5.3.3呢

主要原因

主要是没有理解到这个 bash 去调用命令是咋一个流程。

所以才会一脸懵逼。

然后我就用脚(丑得不行=。=)花了张图去解析这个问题。

大概需要大家从低下往上面去看,我感觉就是反着去画的XD

2018091410847备注 2018年9月13日.jpg

首先要明白bash shell是咋调用命令的

1
$ php -v

这里的流程可以结合前面的图去看(从后面看起)。

这里给命令去调用phpoption -v

首先bash shell会去PATH里面的文件夹去找。

PS: PATH是环境变量里面的一种。

PATH,一般是文件夹目录。可以用echo $PATH去查看现在的变量。

1
2
3
$ echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

现在我们看看这个PHP的路径有没有在里面。

问我的这个人的的PHP路径是在/usr/bin/php

整理一下如下

1
2
3
4

OLD PHP PATH /usr/bin/php #可以在当前的PATH找到它

NEW PHP PATH /usr/local/php/bin/ # 不能够在当前的PATH去找到它

所以现在,你应该很清楚为什么,他为啥编译安装了新的PHP,但是执行的时候却是旧的版本的原因了。

就是因为当前的PATH只能够找到一个旧版本的PHP,而新版本的PHP二进制文件根本就不在要寻找的PATH里面。

值得注意的是,BASH SHELLPATH里面寻找文件的时候,可不会去找这个目录的下一级。

举个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ tree /usr/local/bin/

/usr/local/bin/
├── php
│ └── bin
│ └── php
└── phpp

2 directories, 2 files

$ cat /usr/local/bin/phpp
#!/bin/bash
pwd

$ cat /usr/local/bin/php/bin/php
#!/bin/bash

pwd

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

$ phpp
/usr/local/bin/php/bin

$ php
-bash: php: command not found

可以简单这个PATH路径是包括了这个php的路径的,但是他就是找不到PHP的二进制文件的。

这里的包括是特指这目录结构。

解决方案

  1. whereis php 找出旧的命令的链接或者文件,然后全部转移/删

  2. 这里的话,我就会选择使用软连接去把make install 安装PHP的目录,给链接到现在的默认PATH里面的文件夹里面去。

0%