我的 Ubuntu 15.10 系统运行良好,Wordpress 更新通过 ssh 进行。但是当我将 Ubuntu 升级到 16.04 时,切换到 php7.0 会破坏 Wordpress 更新。起初它提示输入 FTP 登录凭据,直到我安装了 php-ssh2(警告它基于 git 快照)。现在,当我尝试升级插件时,它说
An error occurred while updating WP to Twitter: Unable to locate WordPress Content directory (wp-content).
在 /var/log/apache2/error.log 中:
[Sun Jun 12 11:01:10.969931 2016] [:error] [pid 5545] [client 192.168.1.11:65278] PHP Warning: file_put_contents(): Unable to open ssh2.sftp://Resource id #81/.maintenance on remote host in /home/blog/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 252, referer: http://xxxx.com/wp-admin/update-core.php?action=do-plugin-upgrade
[Sun Jun 12 11:01:10.970772 2016] [:error] [pid 5545] [client 192.168.1.11:65278] PHP Warning: file_put_contents(ssh2.sftp://Resource id #81/.maintenance): failed to open stream: operation failed in /home/blog/wordpress/wp-admin/includes/class-wp-filesystem-ssh2.php on line 252, referer: http://xxxx.com/wp-admin/update-core.php?action=do-plugin-upgrade
我是否缺少某个包、某个配置项,或者其他什么?
答案1
我遇到了同样的问题。这似乎是 php-ssh2 中的一个错误(来自 Ubuntu repo)。
删除 php-ssh2 并使用 pecl 安装较新版本(pecl install ssh2-1.0)后,问题得到解决。
我提交了一个错误报告: https://bugs.launchpad.net/ubuntu/+source/php-ssh2/+bug/1617294
答案2
安装 pecl 扩展对我来说不起作用(谁知道为什么)但我找到了另一种方法:
我刚刚通过 scp 将此插件上传到我的 VPS,它解决了这个问题:https://wordpress.org/plugins/ssh-sftp-updater-support/
答案3
就我而言,以上方法均无效,ralphm 的补丁在 PHP 代码中为我修复了 Ubuntu 14.04 和 Ubuntu 16.04 上 WordPress 的 update-via-ssh2 问题:
--- a/wp-admin/includes/class-wp-filesystem-ssh2.php
+++ b/wp-admin/includes/class-wp-filesystem-ssh2.php
@@ -185,7 +185,7 @@
if ( '/' === $path ) {
$path = '/./';
}
- return 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $path, '/' );
+ return 'ssh2.sftp://' . intval($this->sftp_link) . '/' . ltrim( $path, '/' );
}
/**
更新后请不要忘记重新应用此补丁,直到最终修复到达 WordPress 版本。
答案4
就我而言,仅安装 1.1.2 lib 版本有帮助......
pecl install ssh2-1.1.2
- PHP 7.0.22-0ubuntu0.16.04.1
- 阿帕奇/2.4.18