最近服务器升级到了Ubuntu 16.04 LTS
,结果遇到了与Ubuntu 12.04通过SFTP更新 WordPress相似的问题,界面中没有出现SSH
的选项,只不过目前(2017.06.04
)最新版本的WordPress
(4.7.5
)一直提示的是"无法连接到服务器
",原因依旧是缺少PHP
的SSH
支持库,总结一下解决方法如下:
1 2 3 4 5 6 7 8 |
$ 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
)依然存在的问题是更新插件的时候,提示拷贝出错。查看系统日志
1 |
$ cat /var/log/apache2/error.log | grep error |
可以看到如下错误信息
1 |
'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
的包信息。
比如本服务器上更新的命令示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ 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 |
如果外网访问不畅通,也可以从本站下载,示例脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ sudo apt-get install php-ssh2 $ wget https://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 |