根据鸟哥分享的PHP性能评测,从PHP5.0到PHP7.0,其性能提升到了12倍左右,因此把PHP5升级到PHP7,是可以提升项目运行速度的。
但PHP5到PHP7是大版本的提升,一定会出现不向后兼容的情况!所以升级之前,先检查PHP的兼容性。
但面对一个项目,可能你不熟悉某些代码,甚至不熟悉这个项目,不熟悉这个框架等。
虽然PHP的官方手册已经列出相应的不向后兼容性,但基本不可能人为的根据这些特性去检查,既不科学,效率也不高!
可以选择使用PHPCompatibility/PHPCompatibility来检测项目。
安装
这个工具的使用依赖于另外一个包squizlabs/PHP_CodeSniffer,也就是常用于检测PHP代码是否符合PSR规范的包。
当前的PHPCompatibility最新版是9.3.5,查看该版本的composer依赖,要求php_codesniffer包在^2.3 || ^3.0.2。
目前php_codesniffer包,最新的是3.7.1,满足要求。
可以通过composer下载这个包,下载成功后,对应的工具命令就在vendor/bin/phpcs。
这里就不通过composer方式,而是直接下载phar包,然后放到本地的php命令目录下作为一个备用命令。
以下出现的php-path表示本地的php目录路径。
[root@localhost resource]# wget https://github.com/squizlabs/PHP_CodeSniffer/releases/download/3.7.1/phpcs.phar
[root@localhost resource]# mv ./phpcs.phar php-path/bin/phpcs
# 赋予一个执行权限
[root@localhost resource]# chmod u+x php-path/bin/phpcs
# 直接执行phpcs命令,前提是系统有php命令;此时还没有PHPCompatibility
[root@localhost resource]# php-path/bin/phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz and Zend
安装好php_codesniffer之后,就可以安装PHPCompatibility了。
可以下载它的压缩包,或者通过composer下载到一个独立目录:composer create-project phpcompatibility/php-compatibility:9.3.5 xx-path(如:./php-compatibility) -vvv。
如果是composer require方式,则会下载到指定项目的vendor中,这里我选择create-project方式,让它单独存在某个目录下就好,或者下载压缩包,解压到某个目录下也一样!
# 要保证php-compatibility-path/PHPCompatibility/下存在Sniffs目录;同时这里最好添加一个绝对路径,否则可能导致添加无效!
[root@localhost resource]# php-path/bin/phpcs --config-set installed_paths php-compatibility-path/PHPCompatibility/
# 添加成功,就可以看到PHPCompatibility关键字
[root@localhost resource]# php-path/bin/phpcs -i
The installed coding standards are MySource, PEAR, PSR1, PSR2, PSR12, Squiz, Zend and PHPCompatibility
检测
安装好PHPCompatibility就可以去检测代码的PHP兼容性了。
检测命令php-path/bin/phpcs -p 代码位置 --standard=PHPCompatibility --runtime-set testVersion PHP的版本(可以是某个范围,如7.1-7.2)。
也可以通过--report-full=扫描结果文件,来保存扫描结果。
检测例子:
原本跑在PHP5.6上的Thinkphp3.2项目,如果用PHP7.2跑,会出现哪些不兼容?
执行php-path/bin/phpcs -p 代码位置 --standard=PHPCompatibility --runtime-set testVersion 7.2。
可以看到,类似:
----------------------------------------------------------------------------------------------------
FOUND 17 ERRORS AFFECTING 16 LINES
----------------------------------------------------------------------------------------------------
63 | ERROR | Extension 'mysql_' is deprecated since PHP 5.5 and removed since PHP 7.0; Use mysqli
| | instead
之类的检测输出!
有了检测结果,就可以对应代码去修改兼容性了!
问题
检测的时候,会逐个扫描PHP文件,可能出现内存不足的错误:
Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 4194312 bytes) in phar:///php-path/phpcs/src/Fixer.php on line 3
这个时候可以修改php.ini中的memory_limit = xxM,或者把扫描范围设置更小些,比如只扫描某个目录,而不是整个项目!
标签:bin,兼容性,检测,phpcs,PHPCompatibility,path,PHP,php From: https://www.cnblogs.com/xiaoxiaobug/p/16937952.html