ThinkPHP6.x升级到ThinkPHP8.x教程
一、升级前准备
以下是tp6.1.x升级到tp8.0.x的步骤,如果你目前版本是tp6.0.x的,请先将期升级到tp6.1.x切记!!
6.0升级到6.1版本
由于安全性原因,6.1版本移除核心对think-filesystem库的依赖,因此6.0版本升级至6.1版本后,需要单独安装`topthink/think-filesystem`库。
二、查看PHP的版本,tp8要求php >= 8.0
1、查看php版本:
liuhongdi@lhdpc:~$ /usr/local/soft/php8/bin/php --version
PHP 8.1.1 (cli) (built: Dec 20 2021 16:12:16) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.1, Copyright (c) Zend Technologies
with Zend OPcache v8.1.1, Copyright (c), by Zend Technologies
当前版本是 8.1.1 ,显然符合条件
2、查看当前项止的thinkphp版本:
liuhongdi@lhdpc:/data/php/tpapibase$ php think version
v6.1.0
三、升级ThinkPHP开始
1、升级原项目到可用的最新版本:
liuhongdi@lhdpc:/data/php/tpapibase$ composer update topthink/framework
Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
- Upgrading topthink/framework (v6.1.1 => v6.1.4)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
- Downloading topthink/framework (v6.1.4)
- Upgrading topthink/framework (v6.1.1 => v6.1.4): Extracting archive
Generating autoload files
> @php think service:discover
Succeed!
> @php think vendor:publish
File /data/php/tpapibase/config/trace.php exist!
Succeed!
4 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
liuhongdi@lhdpc:/data/php/tpapibase$ php think version
v6.1.4
可以看到升级完成后版本是v6.1.4
2、修改composer.json
"require": {
"php": ">=8.0.0",
"topthink/framework": "^8.0",
"topthink/think-orm": "^3.0",
"topthink/think-filesystem": "^2.0"
},
"require-dev": {
"symfony/var-dumper": ">=4.2",
"topthink/think-trace":"^1.0"
},
对require需要用到的库的版本调整,我的配置版本号如上,
“topthink/think-filesystem”: “^2.0”
, 这一行是我手动添加上的,
说明:这些版本号是从哪里来的?
用下面的命令新创建一个thinkphp8项目,从composer.json中就看到了
liuhongdi@lhdpc:/data/php$ composer create-project topthink/think tp8
3、删除composer.lock
liuhongdi@lhdpc:/data/php/tpapibase$ rm composer.lock
4、升级前查看当前各库的版本:
liuhongdi@lhdpc:/data/php/tpapibase$ composer show
firebase/php-jwt v6.3.1 A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.
psr/container 1.1.2 Common Container Interface (PHP FIG PSR-11)
psr/http-message 1.0.1 Common interface for HTTP messages
psr/log 1.1.4 Common interface for logging libraries
psr/simple-cache 1.0.1 Common interfaces for simple caching
symfony/polyfill-mbstring v1.27.0 Symfony polyfill for the Mbstring extension
symfony/polyfill-php72 v1.27.0 Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions
symfony/polyfill-php80 v1.27.0 Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions
symfony/var-dumper v4.4.47 Provides mechanisms for walking through any arbitrary PHP variable
topthink/framework v6.1.4 The ThinkPHP Framework.
topthink/think-helper v3.1.6 The ThinkPHP6 Helper Package
topthink/think-orm v2.0.56 think orm
topthink/think-trace v1.5 thinkphp debug trace
5、升级:
liuhongdi@lhdpc:/data/php/tpapibase$ composer install
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
Lock file operations: 14 installs, 0 updates, 0 removals
- Locking firebase/php-jwt (v6.8.0)
- Locking league/flysystem (2.5.0)
- Locking league/mime-type-detection (1.11.0)
- Locking psr/container (2.0.2)
- Locking psr/http-message (1.1)
- Locking psr/log (3.0.0)
- Locking psr/simple-cache (3.0.0)
- Locking symfony/polyfill-mbstring (v1.27.0)
- Locking symfony/var-dumper (v6.3.0)
- Locking topthink/framework (v8.0.1)
- Locking topthink/think-filesystem (v2.0.2)
- Locking topthink/think-helper (v3.1.6)
- Locking topthink/think-orm (v3.0.11)
- Locking topthink/think-trace (v1.6)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 6 updates, 2 removals
- Downloading league/mime-type-detection (1.11.0)
- Downloading psr/container (2.0.2)
- Downloading symfony/var-dumper (v6.3.0)
- Downloading psr/simple-cache (3.0.0)
- Downloading psr/log (3.0.0)
- Downloading topthink/think-orm (v3.0.11)
- Downloading topthink/framework (v8.0.1)
- Downloading league/flysystem (2.5.0)
- Downloading topthink/think-filesystem (v2.0.2)
- Removing symfony/polyfill-php80 (v1.27.0)
- Removing symfony/polyfill-php72 (v1.27.0)
- Installing league/mime-type-detection (1.11.0): Extracting archive
- Upgrading psr/container (1.1.2 => 2.0.2): Extracting archive
- Upgrading symfony/var-dumper (v4.4.47 => v6.3.0): Extracting archive
- Upgrading psr/simple-cache (1.0.1 => 3.0.0): Extracting archive
- Upgrading psr/log (1.1.4 => 3.0.0): Extracting archive
- Upgrading topthink/think-orm (v2.0.61 => v3.0.11): Extracting archive
- Upgrading topthink/framework (v6.1.4 => v8.0.1): Extracting archive
- Installing league/flysystem (2.5.0): Extracting archive
- Installing topthink/think-filesystem (v2.0.2): Extracting archive
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
> @php think service:discover
Succeed!
> @php think vendor:publish
File /data/php/tpapibase/config/trace.php exist!
Succeed!
4 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
6、查看升级后的版本:
liuhongdi@lhdpc:/data/php/tpapibase$ composer show
firebase/php-jwt v6.8.0 A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.
league/flysystem 2.5.0 File storage abstraction for PHP
league/mime-type-detection 1.11.0 Mime-type detection for Flysystem
psr/container 2.0.2 Common Container Interface (PHP FIG PSR-11)
psr/http-message 1.1 Common interface for HTTP messages
psr/log 3.0.0 Common interface for logging libraries
psr/simple-cache 3.0.0 Common interfaces for simple caching
symfony/polyfill-mbstring v1.27.0 Symfony polyfill for the Mbstring extension
symfony/var-dumper v6.3.0 Provides mechanisms for walking through any arbitrary PHP variable
topthink/framework v8.0.1 The ThinkPHP Framework.
topthink/think-filesystem v2.0.2 The ThinkPHP6.1 Filesystem Package
topthink/think-helper v3.1.6 The ThinkPHP6 Helper Package
topthink/think-orm v3.0.11 the PHP Database&ORM Framework
topthink/think-trace v1.6 thinkphp debug trace
7、用php命令查看版本:
liuhongdi@lhdpc:/data/php/tpapibase$ php think version
v8.0.0
最后:
需要注意的是,与之相关的扩展也需要一同更新,比如:composer require topthink/think-view
否则会出现报错,如:Call to undefined method....