サポート » バグ報告と提案 » 4.2へアップグレード後、プラグイン更新不可能に

  • 解決済 taka2

    (@taka2)


    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();
    }

    というパッチを当てて、問題なく更新できるようになってる感じです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「4.2へアップグレード後、プラグイン更新不可能に」には新たに返信することはできません。