タグ: Wordpress

  • WordPressでアップデートするとhash_algos() がエラーになる

    PHPをPHP7.3に上げたところ、Wordpressのアップデートで、下記のエラーが表示された。

    Fatal error: Uncaught Error: Call to undefined function hash_algos() in /usr/xxxxxx/xxxxxx/wp-admin/includes/file.php:1166 Stack trace: #0 
    

    該当ファイルのエラーになったソースコードをみると下記のようになっていた。

            if ( ! function_exists( 'sodium_crypto_sign_verify_detached' ) || ! in_\
    array( 'sha384', array_map( 'strtolower', hash_algos() ) ) ) {
    

    「hash_alogs()」でエラーになっているようだ。調べてみたら、php73-hash-7.3.X がインストールされていなかった。FreeBSDでパッケージから、php73-hashをインストールして、apacheを再起動した。

    # pkg install php73-hash
    Updating FreeBSD repository catalogue...
    FreeBSD repository is up to date.
    All repositories are up to date.
    The following 1 package(s) will be affected (of 0 checked):
    
    New packages to be INSTALLED:
    	php73-hash: 7.3.8
    
    Number of packages to be installed: 1
    
    152 KiB to be downloaded.
    
    Proceed with this action? [y/N]: y
    [1/1] Fetching php73-hash-7.3.8.txz: 100%  152 KiB 155.8kB/s    00:01    
    Checking integrity... done (0 conflicting)
    [1/1] Installing php73-hash-7.3.8...
    [1/1] Extracting php73-hash-7.3.8: 100%
    Message from php73-hash-7.3.8:
    
    This file has been added to automatically load the installed extension:
    /usr/local/etc/php/ext-20-hash.ini
    

    すぐにWordpressのアップデートを試すと、「別の更新が進行中です。」と出てしまうことがある。これは、前のアップデートによるロックが発生しているため。15分経てば、DBのロックが解除されるので、時間が立ってから試す。

  • WordPressで、xml_parser_create()のエラーが発生した

    PHPをPHP5.6からPHP7.3に上げたところ、Wordpressで以下のエラーが発生した。

    Fatal error: Uncaught Error: Call to undefined function xml_parser_create()
    

    PHPのオプションで、xmlに関するモジュールがインストールされていないことが原因だった。FreeBSDでパッケージからインストールしているので、下記のようにpkgコマンドでインストール。その後、Apacheを再起動し、無事にエラーは解消。

    pkg install php73-xml-7.3.8 
    
  • NginxでWordPressのパーマリンクが動かず、Apacheに変えた

    WordPress用のサーバ構築があったので、フロントのウェブサーバをNginxで設定した。PHPの動作や、Wordpressの初期設定までは、問題なし。Wordpressのパーマリンク設定をデフォルトから、変更したところ、404エラーに。Nginxなので、「.htaccess」でのrewrite設定が効かないので、Nginxの設定を変えて対応していが、いろいろと試しても動かない。いつまでも時間をかけてられないので、パーマリンクの問題で、Apache2.4系に変更した。Apache2.4だと、かなりあっさりと動作した。

    どこか時間を見つけて、Nginx + PHP + WordPressのパーマリンクの設定を検証しなくては。公式サイトの手順でもダメだったから、なんでだろう。たぶん、途中の設定とかがよくないのだろうな。やり直したら、さくっと動作するとか、そういうパターンだろう。

  • AWSのELBでWordPressを使うと”ERR_TOO_MANY_REDIRECTS”がでる

    AWSで、WordpressとSSLを使うためにELB(Elastic Load Balancer)を設定したのだが、アクセスすると、”ERR_TOO_MANY_REDIRECTS” が表示される。

    調べてみると、Wordpress+SSL+ELBの組み合わせで発生しているとのこと。Amazonの公式ページの内容も試してみたが、効果なし。

    https://aws.amazon.com/jp/premiumsupport/knowledge-center/redirect-http-https-elb/

    Nginxを使ったので、その設定を試したが効果なし。

    WordPressの設定で回避できることがわかったので、その設定を実施。

    “wp-config.php” の「wp-settings.php」の読み込み前に設定を追加。これで、アクセスしたところ、見事に成功。このとき、Nginxの設定は元に戻した状態で実施しても問題なかったので、Nginxの設定ではなく、Wordpress側の設定で回避できる問題だったようだ。

    /** Absolute path to the WordPress directory. */
    if ( ! defined( 'ABSPATH' ) ) {
            define( 'ABSPATH', dirname( __FILE__ ) . '/' );
    }
    
    /** 追加した設定 **/
    if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
        $_SERVER['HTTPS'] = 'on';
        $_ENV['HTTPS'] = 'on';
    }
    
    
    /** Sets up WordPress vars and included files. */
    require_once( ABSPATH . 'wp-settings.php' );
    

    参考: https://qiita.com/katzueno/items/ec4cb5997eb8a066fefc

  • 「Yuzo Related Posts」Pluginの脆弱性でWordPressのサイトが別のサイトに転送される

    自分の管理ではないWordpressのサイトにアクセスすると、「destinywall.org」のサイト経由で、さまざまな怪しいサイトに遷移するという事象に遭遇した。

    これの対応を行ったのだが、最初はサイトに何かを埋め込まれたと思い、ファイルのタイムスタンプや一時経由のURLを検索したが反応なし。ウェブページもすぐに遷移してしまうため、状況がみれず。そのため、wgetでINDEXを取得して、HTMLファイルの中を検索したが、文字列は見つからず。

    次に切り分けのため、Wordpressのテーマも切り替えたが、解決せず。そのため、テーマではなく、もっと共通の部分に、何かが仕込まれている、という仮説の元、一つ一つプラグインを無効化していった。無効化していった結果、「Yuzo Related Posts」を無効化したときにサイトの表示が正常に戻った。これが原因ということで、いろいろと調べたところ、このプラグインの脆弱性を利用されて、別ページに飛ばされることが判明した。

    対処として、

    1. プラグインを削除
    2. DBにアクセスし、wp_optionsから、「yuzo_related_post_options」のキーのデータを削除

    これで対応完了。プラグインもかなり大量に入っていたので、結構大変だった。なんだかんでプラグインは少ない方がよい。(プラグインの管理も大変)

    https://wordpress.org/support/topic/remove-this-plugin-immediately/

  • 「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」と表示された

    ちょっと急ぎの用があって、CentOS7を用意して、MariaDBとPHPとApache2をいれて、Wordpressを動作させようとしたところ、

    お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。
    

    と表示されて、Wordpressのセットアップが出来なかった。

    「php -i」 でPHPの状況を確認したところ、PHPのMySQL拡張が入っていなかった。 なので、yumでphp-mysqlをインストールした。

    yum -y install php-mysql
    

    これで、解消。
    っていうか、これだけで済むんだから、楽。
    make, make installしなくていいだけで本当に楽。
    楽しすぎて、いろいろと忘れそう。