このサイトのPHPバージョンを、OpenLiteSpeedの管理画面(ダッシュボード)のツールにあるPHPコンパイル機能を使ってPHP7.4.3に変更しました。
Debianに登録していたLiteSpeedのリポジトリからインストールしていたPHP7.3だと、cURL error 77:のエラーがWordPressで出まくるようになったので、その回避策です。
こちらの記事の通りにDebian10にインストールしたOpenLiteSpeedでの内容です。
このページの目次
WordPressにログインできなくなる
先週あたりから、なにげなく apt update⇒apt upgrade でDebianのアップデートをかけて以降、WordPressのいたるところで不具合が出まくって困ってしまいました。
まずはWordPressの管理画面に正しいIDとパスワードを入れているのに「invalid username or incorrect password!」と言われてログインできません。新規にログインするのができないだけで、前日からログインしていたPCのブラウザーだと上部に管理画面の黒いバーが出たままになっていてダッシュボードに入れたりしますが、一度ログアウトするとアウトでした。
これは、こちらのサイトを参考にしてSSLVerifyを無効にすることで一時的な回避策のようですがログインできるようになりました。
cURL error 77に悩まされる
ログインはできましたが、管理画面のいたるところでcURL error 77:の表示が出ていました。JetPackプラグインの統計情報やWordPressニュースなどがエラーで表示されなくなっていました。
さらにWordPressやプラグインの更新もcURL error 77:でアップデートできません。プラグインの新規インストールも同じくできなくなりました。
管理画面だけかと思っていたら、Amazonの商品リンクをだしているAmazon Auto Linksの表示もエラーで表示されていません。これは困ったことになりました。
cURLのSSL Versionが変わっていた
一週間くらいいろいろ調べたり試したりDebianを入れ直したりした結果、cURLのSSL VersionがOpensslからNSSというのに変わっていたのが原因のようです。
現在OpenLiteSpeedをインストールすると、標準のPHPバージョンは7.3.19-1+busterになっています。ただしWordPress推奨モジュールのcURLが入っていないため、lsphp73-curlをインストールすると依存関係のパッケージlibcurl3-nssも一緒に入ってしまいます。この状態でNSSになっているのをOpenSSLに変更する方法は、私にはわかりません。
では、どうやってcURLのSSL VersionをOpenSSLにしたのかというと、この記事のタイトルである、ツールのPHPコンパイル機能でPHP7.4にしたら出来たという長い前置きでした。
PHP7.4.3のコンパイル
OpenLiteSpeedのダッシュボード⇒Tools⇒Compile PHP を開きます。
PHP Versionのプルダウンメニューで7.4.3を選び、Nextボタンを押します。
次の画面で下表のように設定します。Installation Pathは後でわかりやすいようにlsphp743にしています。Configure Parametersはデフォルトの値から赤字部分を追加しています。
(注意)下の表からコピペする際には、ーー(ハイフン2つ)がー(ハイフン1つ)になるようです。各先頭はハイフンが2つになっていることに注意してください。
Installation Path Prefix | /usr/local/lsws/lsphp743 |
Configure Parameters | –with-mysqli –with-zlib –with-gd –enable-shmop –enable-sockets –enable-sysvsem –enable-sysvshm –enable-mbstring –with-iconv –with-mcrypt –with-pdo-mysql –enable-ftp –enable-zip –with-curl –enable-soap –enable-xml –enable-json –with-openssl –enable-bcmath ‘–enable-gd’ ‘–enable-exif’ ‘–with-zip’ ‘–with-mysql-sock=/var/run/mysqld/mysqld.sock’ |
(補足)赤字の追加部分はWordPressの推奨モジュールであるgd,exif,zipを追加。mysqliのmysqli.default_socketを/var/run/mysqld/mysqld.sock にする設定です。これをしておかないとWordPressがデータベース接続エラーになってしまいます。
次の画面で、準備ができたらNextボタンを押します。
次の画面の説明の通りに、シェルスクリプトを指示通りのコマンドをターミナルからrootで実行します。
/usr/local/lsws/phpbuild/buildphp_manual_run.sh
コマンドを実行するとコンパイルが始まります。その前の準備段階で不足しているパッケージやモジュールがあると何度かエラーで止まります。その都度エラー内容を見てインストール⇒コマンド再実行を繰り返します。Debianを最小構成でインストールしていた場合は、事前に下記をインストールしておくとすんなりいくかもしれません。
compaileやmake用に下記が必要でした。
apt install gcc pkg-config build-essential
configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met:
No package ‘libxml-2.0’ found のエラーで止まったら
apt install libxml2-dev
configure: error: Package requirements (openssl >= 1.0.1) were not met:
No package ‘openssl’ found のエラーで止まったら
apt install libssl-dev libmcrypt-dev
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
No package ‘sqlite3’ found のエラーで止まったら
apt install libsqlite3-dev
configure: error: Package requirements (zlib >= 1.2.0.4) were not met:
No package ‘zlib’ found のエラーで止まったら
apt install zlib1g zlib1g-dev
configure: error: Package requirements (libcurl >= 7.15.5) were not met:
No package ‘libcurl’ found のエラーで止まったら
apt install libcurl4-openssl-dev
configure: error: Package requirements (oniguruma) were not met:
No package ‘oniguruma’ found のエラーで止まったら
apt install libonig-dev
configure: error: Package requirements (libpng) were not met:
No package ‘libpng’ found のエラーで止まったら
apt install libpng-dev
configure: error: Package requirements (libzip >= 0.11) were not met:
No package ‘libzip’ found のエラーで止まったら
apt install libzip-dev
必要なパッケージが揃ったらコンパイルとインストールが始まります。15~20分くらい待ちました。successfully(成功)のメッセージが出たら完了です。
LiteSpeed SAPI の設定変更
ダッシュボード⇒Server Configration⇒External Appタブを開き、LiteSpeed SAPI Appの設定を一か所変更します。
Command | lsphp743/bin/lsphp |
さきほどコンパイルしたパスを指定するだけでPHPのバージョンを変更できます。
再起動
LiteSpeedを再起動します。なぜか再起動ボタンでは有効にならない場合もありました。
一度OpenLiteSpeedをキルして再起動するとよいと思います。
systemctl kill lsws
systemctl restart lsws
完了
以上でコンパイルしたPHP7.4にしたところ、WordPressの管理画面のcURLエラーが解消されました。
ひとつ問題が残っていて、WordPressのサイトヘルスで「オプションのモジュール imagick がインストールされていないか、無効化されています。」が出ています。なんとかimagickを有効にしてコンパイルしようとしましたが、–with-imagick –enable-imagick をつけても有効になりません。
imagickはgdが入っているのでこのままでも問題ありません。ここ2週間近く今回の問題に時間を取られ過ぎてしまったので、今回はこれで解決ということにしました。