起因以及相关问题
概述: 大概就是通过编译安装更新php版本 5.3.3
»> 5.6.30
问下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
这里的流程可以结合前面的图去看(从后面看起)。
这里给命令去调用php
的option
-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 SHELL
在PATH
里面寻找文件的时候,可不会去找这个目录的下一级。
举个例子
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的二进制文件的。
这里的包括是特指这目录结构。
解决方案
whereis php
找出旧的命令的链接或者文件,然后全部转移/删这里的话,我就会选择使用
软连接
去把make install
安装PHP的目录
,给链接到现在的默认PATH里面的文件夹里面去。