• 解決済 amachang

    (@amachang)


    WordPress4.5にアップデート後、画像のアップロードができなくなりました。
    メディアのアップロード画面からアップしようとすると、以下のエラーが表示されます。

    Fatal error: Undefined class constant ‘ALPHACHANNEL_UNDEFINED’ in /home/users/2/lolipop.jp-xxxxx/web/news/wp-includes/class-wp-image-editor-imagick.php on line 379

    該当のファイルの箇所は以下のあたりになります。

    /**
    	 * Rotates current image counter-clockwise by $angle.
    	 *
    	 * @since 3.5.0
    	 * @access public
    	 *
    	 * @param float $angle
    	 * @return boolean|WP_Error
    	 */
    	public function rotate( $angle ) {
    		/**
    		 * $angle is 360-$angle because Imagick rotates clockwise
    		 * (GD rotates counter-clockwise)
    		 */
    		try {
    			$this->image->rotateImage( new ImagickPixel('none'), 360-$angle );
    
    			// Since this changes the dimensions of the image, update the size.
    			$result = $this->update_size();
    			if ( is_wp_error( $result ) )
    				return $result;
    
    			$this->image->setImagePage( $this->size['width'], $this->size['height'], 0, 0 );
    		}
    		catch ( Exception $e ) {
    			return new WP_Error( 'image_rotate_error', $e->getMessage() );
    		}
    		return true;
    	}

    検索で解決策が見つからなかったんですが、解決策をどなたかご教示頂けませんでしょうか?

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • モデレーター Daisuke Takahashi

    (@extendwings)

    使っているPHPのバージョンは何ですか?

    トピック投稿者 amachang

    (@amachang)

    さっそくありがとうございます!
    サーバーはロリポップなんですが、管理画面を見ると、
    5.3(CGI版)となっています。

    私も同じ問題に直面しています。
    サーバーはロリポップで、4.5にアップデート後に、メディアのアップロードにエラーが起きるようになりました。

    メディアライブラリーの中にはファイルは入っているようなのですが、
    (wp-content/uploads/)では表示されるのですが、
    パーマリンク上では反映されておらず、困惑しています。

    amachangさんも同じ状況ではないのでしょうか?

    トピック投稿者 amachang

    (@amachang)

    qingmuさん、コメントありがとうございます。

    確認してみたところ、僕の場合は、画像直のパーマリンクでは表示されますね。
    ただ不思議なことに、FTPで画像のアップロードフォルダを見ると、ファイルが一つも表示されない状況になっています。。

    調べたわけではなく想像ですが、PHPに組み込まれているimagickのバージョンまたは構成が影響しているのかも。

    追記:phpのドキュメントによると
    http://php.net/manual/ja/imagick.constants.php

    imagick::ALPHACHANNEL_UNDEFINED (integer)
    この定数は、Imagick のコンパイルを次のバージョンの ImageMagick で 行った場合に使用可能です。 6.4.6 以降。

    さらに追記:379行目は下記コードのはず。

    /*
     * If alpha channel is not defined, set it opaque.
     *
     * Note that Imagick::getImageAlphaChannel() is only available if Imagick
     * has been compiled against ImageMagick version 6.4.0 or newer.
     */
    if ( is_callable( array( $this->image, 'getImageAlphaChannel' ) )
    	&& is_callable( array( $this->image, 'setImageAlphaChannel' ) )
    	&& defined( Imagick::ALPHACHANNEL_UNDEFINED )
    	&& defined( Imagick::ALPHACHANNEL_OPAQUE )
    ) {
    	if ( $this->image->getImageAlphaChannel() === Imagick::ALPHACHANNEL_UNDEFINED ) {
    		$this->image->setImageAlphaChannel( Imagick::ALPHACHANNEL_OPAQUE );
    	}
    }

    モデレーター Daisuke Takahashi

    (@extendwings)

    <?php
    
    $versions = Imagick::getVersion();
    var_dump( $versions );

    問題が起きている方々、このPHPコードを適当なファイル名でサーバ上に保存して、ブラウザで確認してみたときに何が表示されるかを教えてください。

    問題がおきていない私のところでは Imagick が入っていませんでした。レンタルサーバーです。

    Fatal error: Uncaught Error: Class ‘Imagick’ not found in /home/ZZZZZ/ZZZZZ.webcrow.jp/public_html/topic-158985.php:3 Stack trace: #0 {main} thrown in /home/ZZZZZ/ZZZZZ.webcrow.jp/public_html/topic-158985.php on line 3

    class-wp-image-editor-imagick.php の379と380行目のコードが間違ってますね。

    && defined( Imagick::ALPHACHANNEL_UNDEFINED )
    && defined( Imagick::ALPHACHANNEL_OPAQUE )

    正しくは

    && defined( 'Imagick::ALPHACHANNEL_UNDEFINED' )
    && defined( 'Imagick::ALPHACHANNEL_OPAQUE' )

    amachangさん、qingmuさん、この修正を試してみていただけませんか?

    トピック投稿者 amachang

    (@amachang)

    Daisuke Takahashiさん

    ありがとうございます。
    私はこちらのメッセージが表示されました。

    array(2) { ["versionNumber"]=> int(1603) ["versionString"]=> string(59) "ImageMagick 6.4.3 2011-07-13 Q16 http://www.imagemagick.org" }

    トピック投稿者 amachang

    (@amachang)

    gblsmさん

    ありがとうございます!
    その修正で無事に解決しました!

    amachangさん、確認ありがとうございました。さっそくパッチを投げておきました。
    https://core.trac.wordpress.org/ticket/36501

    皆さま
    ありがとうございます。

    gmlsmさん、ありがとうございます。
    私の場合、
    class-wp-image-editor-imagick.php.diff
    パッチをアップロードして、再度試してみたのですが、
    まだ、”HTTPエラー”が起きてしまっています。

    テーマはtwentyではなくdazzlingというのを使用しています。
    私が初心者すぎてうまく対応できていない可能性もあるのですが。。。

    qingmuさん、説明不足ですみません。パッチのファイルそのものをアップロードするのではなく、wp-includes ディクレトリーにある class-wp-image-editor-imagick.php ファイルを修正して、というつもりでした。

    WordPress 4.5.1 で修正されるみたいです。
    https://core.trac.wordpress.org/ticket/36501#comment:4

    gmlsmさん

    class-wp-image-editor-imagick.php を直接修正したら、
    問題なく画像のアップロードができました!
    本当にありがとうございました。助かりました。

    モデレーター Seisuke Kuraishi

    (@tenpura)

    以下に、修正手順をまとめました。

    WordPress 4.5 class-wp-image-editor-imagick.php のバグ対策

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • トピック「メディアのアップロードでFatal error」には新たに返信することはできません。