
У меня была 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) проблема была решена.
Я отправил сообщение об ошибке: 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-коде исправлена проблема обновления через ssh2 для WordPress на Ubuntu 14.04 и Ubuntu 16.04 для меня:
--- 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