PHP版本判断之version_compare()函数

判断当前PHP的版本是否高于某个版本,或者低于某个版本的方法是使用version_compare()函数。

<?php

header('content-type:text/html;charset=utf-8');
/**
 * 判断php的版本是否在7.0.0以上
 */

echo '<pre>';
 
//本人使用的版本为  7.0.18
echo 'PHP的当前版本为 '.PHP_VERSION."\n";

var_dump(version_compare(PHP_VERSION,'5.2.0'));

var_dump(version_compare(PHP_VERSION,'5.2.0','='));

var_dump(version_compare(PHP_VERSION,'5.3.0','ge'));

if(version_compare(PHP_VERSION,'7.0.0','ge')){

	echo '您的PHP版本大于7.0.0,当前版本为 '.PHP_VERSION;

}else{

	echo '您的PHP版本小于7.0.0,当前版本为 '.PHP_VERSION;

}

?>

参考链接


PHP 版本判断 version_compare() 函数

Ubuntu 16.04 LTS通过SSH2更新WordPress及其插件

最近服务器升级到了Ubuntu 16.04 LTS,结果遇到了与Ubuntu 12.04通过SFTP更新 WordPress相似的问题,界面中没有出现SSH的选项,只不过目前(2017.06.04)最新版本的WordPress(4.7.5)一直提示的是"无法连接到服务器",原因依旧是缺少PHPSSH支持库,总结一下解决方法如下:

$ sudo apt-get install php-ssh2
$ sudo phpenmod ssh2

#如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM
$ sudo service php7.0-fpm restart

#如果使用Apache2自身的模块处理PHP协议,则重启Apache2
$ sudo service apache2 restart

如果更新或者删除插件的时候提示 "未能找到WordPress插件目录",则参照
Ubuntu 14.04系统WordPress 4.5升级到PHP7之后执行插件升级报错“无法定位WordPress内容目录(wp-content)”中的方法修改即可。

目前(2017.06.09)依然存在的问题是更新插件的时候,提示拷贝出错。查看系统日志

$ cat /var/log/apache2/error.log | grep error

可以看到如下错误信息

'PHP message: PHP Warning:  file_put_contents(ssh2.sftp://Resource id #85/var/www/wordpress/.maintenance): failed to open stream: operation failed in /var/www/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 253\nPHP message: PHP Warning:  file_put_contents(ssh2.sftp://Resource id #90/var/www/wordpress/wp-content/upgrade/wp-statistics.12.0.7-HJk6Bj/wp-statistics/ajax.php): failed to open stream: operation failed in /var/www/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 253\n', referer: https://www.mobibrw.com/wp-admin/plugins.php

这个问题属于php-ssh2自身的BUG导致的,问题已经确认并修复,但是还没合并到Ubuntu 16.04 LTS所属的分支上。

目前的解决方法是单独安装Ubuntu 17.04系统上已经编译好的对应系统的deb包,然后手工安装更新。

详细的版本信息可以从Ubuntu php-ssh2 package查询各个系统版本上的关于php-ssh2的包信息。

比如本服务器上更新的命令示例如下:

$ sudo apt-get install php-ssh2

$ wget https://launchpad.net/ubuntu/+archive/primary/+files/php-ssh2_1.0+0.13-2_amd64.deb

$ sudo dpkg -i php-ssh2_1.0+0.13-2_amd64.deb 
$ rm -rf php-ssh2_1.0+0.13-2_amd64.deb

#如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM
$ sudo service php7.0-fpm restart

#如果使用Apache2自身的模块处理PHP协议,则重启Apache2
$ sudo service apache2 restart

如果外网访问不畅通,也可以从本站下载,示例脚本如下:

$ sudo apt-get install php-ssh2
$ wget http://www.mobibrw.com/wp-content/uploads/2017/06/php-ssh2_1.00.13-2_amd64.deb_.zip
$ unzip php-ssh2_1.00.13-2_amd64.deb_.zip

$ sudo dpkg -i php-ssh2_1.0+0.13-2_amd64.deb 
$ rm -rf php-ssh2_1.0+0.13-2_amd64.deb
$ rm -rf php-ssh2_1.00.13-2_amd64.deb_.zip

#如果使用PHP-FPM模块处理PHP协议,则重启PHP-FPM
$ sudo service php7.0-fpm restart

#如果使用Apache2自身的模块处理PHP协议,则重启Apache2
$ sudo service apache2 restart

参考链接