4.2へアップグレード後、プラグイン更新不可能に
-
4.2に更新した後、プラグインの更新などが動かなくなりました。
エラーログを見ると、PHP Fatal error: Maximum function nesting level of ‘100’ reached, aborting! in …/wp-admin/includes/file.php on line 154
PHP Stack trace:
PHP 1. {main}() …/wp-admin/update.php:0
PHP 2. Plugin_Upgrader->bulk_upgrade() …/wp-admin/update.php:44
PHP 3. WP_Upgrader->maintenance_mode() …/wp-admin/includes/class-wp-upgrader.php:872
PHP 4. WP_Filesystem_FTPext->put_contents() …/wp-admin/includes/class-wp-upgrader.php:639
PHP 5. wp_tempnam() …/wp-admin/includes/class-wp-filesystem-ftpext.php:125
PHP 6. wp_tempnam() …/wp-admin/includes/file.php:159
PHP 7. wp_tempnam() …/wp-admin/includes/file.php:159
以下略ということで、無限ループで落ちてるようです。
- 更新にはftpを使っています。
- ftpの接続先はchrootされたアカウントになっており、ルート(/)がWordPressのディレクトリになっています。
- 上記の状況で、wp_tempnam が最初に wp_tempname(‘/.maintenance’, ‘/var/tmp/’) という引数で呼び出されており、以後再帰でwp_tempname(‘/’, ‘/var/tmp/’) 呼び出しの無限ループになります。
- WordPress そのものの更新(4.2の再インストール)も、同じエラーで落ちます。
とりえあえず、
— wp-admin/includes/file.php.orig 2015-04-27 10:34:19.000000000 +0900
+++ wp-admin/includes/file.php 2015-04-27 12:21:59.000000000 +0900
@@ -146,7 +146,7 @@
$dir = get_temp_dir();
}– if ( empty( $filename ) || ‘.’ == $filename ) {
+ if ( empty( $filename ) || ‘.’ == $filename || ‘/’ == $filename) {
$filename = time();
}というパッチを当てて、問題なく更新できるようになってる感じです。
- トピック「4.2へアップグレード後、プラグイン更新不可能に」には新たに返信することはできません。