
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 リポジトリから) のバグのようです。
php-ssh2 を削除し、pecl を使用して新しいバージョンをインストールした後 (pecl install ssh2-1.0)、問題は解決しました。
バグレポートを提出しました: バグ:
答え2
pecl 拡張機能のインストールはうまくいきませんでした (理由はわかりません) が、代替手段を見つけました:
このプラグインを scp 経由で VPS にアップロードしたところ、問題は解決しました。https://wordpress.org/plugins/ssh-sftp-updater-support/
答え3
私の場合、上記のどれもうまくいきませんでしたが、ralphm によるパッチPHP コードで、Ubuntu 14.04 と Ubuntu 16.04 の両方で WordPress の 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