php的版本升級

爲什麼要寫這篇文章也是源於我犯了一個錯誤,還是今天發現的。

今天我嘗試想把 php的redis 擴展升級爲最新的

然後爲了不影響本地開發環境的影響我傻傻的複製了一份 如圖所示

[root@localhost php]# ll

total 16

drwxr-xr-x 9 root root 4096 Nov 10  2015 5.4.45

drwxr-xr-x 9 root root 4096 Aug  3 10:37 5.4.45.bak

drwxr-xr-x 9 root root 4096 Aug  3 09:52 7.0.2

drwxr-xr-x 9 root root 4096 Jan 28  2016 7.0.2.bak

lrwxrwxrwx 1 root root   21 May 16 21:02 php -> /usr/local/php/5.4.45

[root@localhost php]# 


在這裏說明一下 對於php 的版本我採用的是軟連接

[root@localhost php]# which php

/usr/bin/php

[root@localhost php]# ll /usr/bin/php 

lrwxrwxrwx 1 root root 26 Jan 29  2016 /usr/bin/php -> /usr/local/php/php/bin/php

[root@localhost php]# 


爲了靈活的更新php  使用ln 一直只對/usr/local/php/php 這個文件做軟連接  這樣我想切換7.0.2
只需要 ln -snf /usr/local/php/7.0.2 /usr/local/php/php 即可

[root@localhost php]# ln -snf /usr/local/php/7.0.2 /usr/local/php/php

[root@localhost php]# php --version

PHP 7.0.2 (cli) (built: Jan 29 2016 01:31:08) ( NTS )

Copyright (c) 1997-2015 The PHP Group

Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

[root@localhost php]#


回到主題

我傻傻的複製了一份出來 本來想先升級 5.4.45.bak 但是不然。

more information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

Installing shared extensions:     /usr/local/php/5.4.45/lib/php/extensions/no-debug-non-zts-20100525/

[root@localhost redis-2.2.8]# 


不管是我定義 php-config  phpize 這兩個文件在/usr/local/php/5.4.45.bak/bin下  依然更新到了 /usr/local/php/5.4.45  


然後進行測試  幹掉/usr/local/php/5.4.45 

後來就開始出問題了


[root@localhost redis-2.2.8]# /usr/local/php/5.4.45.bak/bin/phpize 

Cannot find build files at '/usr/local/php/5.4.45/lib/php/build'. Please check your PHP installation.


[root@localhost redis-2.2.8]# 



第一反應就是/usr/local/php/5.4.45.bak/bin/phpize 這個腳本有問題 

[root@localhost redis-2.2.8]# cat /usr/local/php/5.4.45.bak/bin/phpize|less

#!/bin/sh


# Variable declaration

prefix='/usr/local/php/5.4.45'

datarootdir='/usr/local/php/5.4.45/php'

exec_prefix="`eval echo ${prefix}`"

phpdir="`eval echo ${exec_prefix}/lib/php`/build"

includedir="`eval echo ${prefix}/include`/php"

builddir="`pwd`"

SED="/bin/sed"



果然 他在開始就定義了路徑 然後繼續測試 改路徑

我使用替換但是提示我有 3列被修改了

  $SED \

  -e "s#/usr/local/php/5.4.45.bak#$prefix#" \

  < "$phpdir/phpize.m4" > configure.in

}       

        

phpize_autotools()

{

  $PHP_AUTOCONF   || exit 1

  $PHP_AUTOHEADER || exit 1

}

  

# Main script


case "$1" in 

  # Cleanup

  --clean)

3 substitutions on 3 lines


然後我搜索了一下  帶這個路徑的到底有多少

[root@localhost 5.4.45.bak]# grep -rl "5.4.45" .

./php/man/man8/php-fpm.8

./php/man/man1/php.1

./php/man/man1/phpize.1

./php/man/man1/php-config.1

./php/man/man1/phar.1

./bin/php

./bin/pear

./bin/phpize

grep: ./bin/phar: No such file or directory

./bin/php-config

./bin/pecl

./bin/phar.phar

./bin/php-cgi

./bin/peardev

./sbin/php-fpm

./include/php/main/php_version.h

./include/php/main/build-defs.h

./etc/php-fpm.conf.default

./etc/pear.conf

./lib/php/extensions/no-debug-non-zts-20100525/redis.so

./lib/php/extensions/no-debug-non-zts-20100525/libevent.so

./lib/php/extensions/no-debug-non-zts-20100525/swoole.so

./lib/php/pearcmd.php

./lib/php/peclcmd.php

./lib/php/.registry/console_getopt.reg

./lib/php/.registry/pear.reg

./lib/php/.registry/xml_util.reg

./lib/php/.registry/archive_tar.reg

./lib/php/.registry/structures_graph.reg

[root@localhost 5.4.45.bak]# 


我的天還有些多。。 我也只是個維護者  難道批量替換?  但是我覺得 還是老實 在安裝一套吧。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章