在Ubuntu1.4下升级php和Yii2

 
 
composer切换到国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
或者
composer.json中添加
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
一、php从5.59升级到php7.25
1、首先添加一个PPA,并更新软件源:
sudo add-apt-repository ppa:ondrej/php

sudo apt-get update
 
查找PHP 7的最新版本,并进行安装
sudo apt search php7 

sudo apt-get install php7.2
查看当前PHP版本,是否已经安装成功。
 php -v
2、php版本切换
#PHP 5.6 => PHP 7.2
sudo a2dismod php5.6 
sudo a2enmod php7.2
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php7.2

#PHP 7.2 => PHP 5.6 sudo a2dismod php7.2
sudo a2enmod php5.6
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php5.6
3、安装php扩展(以下是我自己原来php有的扩展)
sudo apt install php7.2-mysql
sudo apt-get install php7.2-memcache
sudo apt-get install php7.2-curl 
sudo apt-get install php7.2-gd
sudo apt-get install php7.2-xml

......
 (被转载的文章坑一个下午,在原教程中找到了缺少的一个步骤)
 
4、重启服务
sudo service apache2 restart
 
二、yii2从2.0.4 升级到2.0.15 
 
1、首先,确认您安装了最新版本的 Composer 资源插件
php composer.phar global require "fxp/composer-asset-plugin:~1.2.0"
2、然后升级 Yii 通过运行:
php composer.phar update yiisoft/yii2 yiisoft/yii2-composer bower-asset/jquery.inputmask

或者

composer.json中添加
"require": {
"php": "~7.2.0",
"yiisoft/yii2": "~2.0.15",
}
 

 然后运行

composer update

注意:

升级到php7.2的时候如果在你的项目中引用了use yiiaseObject会报错,因为php7中不允许使用Object关键字,所以要用 use yiiaseBaseObject 代替就好。

目前到这里完成了,后续有什么问题再补充吧。

1、 PHP7 serialize_precision 配置不当导致 json_encode() 浮点小数溢出错误

 php.ini serialize_precision改为16
 
2、安装redis,已经设置密码等
下载安装redis
$sudo apt-get update
$sudo apt-get install redis-server

启动redis

redis-server&
检查是否启动
redis-cli
ping

 设置密码  https://blog.csdn.net/zyz511919766/article/details/42268219

redis-cli

127.0.0.1:6379> config set requirepass my_redis  
OK  
redis 127.0.0.1:6379[1]> config get requirepass 
1) "requirepass"  
2) "my_redis"  

3、升级完PHP7,微信支付回调失败。 $GLOBALS['HTTP_RAW_POST_DATA']Undefined index: HTTP_RAW_POST_DATA。查了资料是php7 移除了这个全局变量,使用file_get_contents("php://input")代替

//$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$xml = file_get_contents("php://input");  
        

4、由于php7对参数严谨性,count()只能传递array参数,修改项目之前使用count()传递了字符串的地方

原文地址:https://www.cnblogs.com/jiangxiaochang/p/9021484.html