Back
Please upgrade your browser or check your network connection.

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

起因以及相关问题

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


jpg

jpg

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

主要原因

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

所以才会一脸懵逼。

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

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

![2018091410847备注 2018年9月13日.jpg](https://cdn.zsnmwy.net/2018091410847备注 2018年9月13日.jpg)

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

1$ php -v

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

这里给命令去调用phpoption -v

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

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

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

1$ echo $PATH
2
3/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

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

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

整理一下如下

1
2OLD PHP PATH /usr/bin/php #可以在当前的PATH找到它
3
4NEW PHP PATH /usr/local/php/bin/ # 不能够在当前的PATH去找到它
5

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

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

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

举个例子

 1$ tree /usr/local/bin/
 2
 3/usr/local/bin/
 4├── php
 5│   └── bin
 6│       └── php
 7└── phpp
 8
 92 directories, 2 files
10
11$ cat /usr/local/bin/phpp
12#!/bin/bash
13pwd
14
15$ cat /usr/local/bin/php/bin/php
16#!/bin/bash
17
18pwd
19
20$ echo $PATH
21/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
22
23$ phpp
24/usr/local/bin/php/bin
25
26$ php
27-bash: php: command not found
28

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

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

解决方案

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

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