前回、PHP8.1
では動かすことが叶わず、PHP7
系が必要だったことが判明したところで終わりました。あのままフェードアウトする予定だったのですが、少しモチベーションが回復してDocker
イメージのベースをちょいと変えるだけということに気づいたので、もうちょっとだけ頑張ってみることにしました。
というわけで Dockerfile
の一行目を以下のように書き換えてビルドしなおしました。
FROM php:7.4-apache-bullseye

エラーが出ずにインストール完了しました。さっそくURLに /login
を付けてログインしてみることにします。

ん?なんだかデザインが崩れているような。開発者ツールでコンソール出力を確認してみたところ、以下のようなエラーが。

Azureで生成される長いURLのせいで難しいことが書いてあるように見えますが、よくよく読むとスタイルシートの読み込みで https
を使っていないことで怒られているようです。このせいでスタイルシートが読み込まれなかったようです。
デザイン崩れはしょうがないとして、ユーザIDとパスワードを入力してみたのですが、ログイン失敗になってしまいます。どうやらログインは ajax
で処理されていてそのエンドポイントのURLがこれまた https
を使っていないことでエラーになっていました。
これはおそらく Azure App Service 側の問題のような気がしてきました。プログラム側からホストのURLを取得したときに https://
… ではなく http://
… と認識されてしまっているのかも?
いったんサービスを停止し、/backup/data
配下を確認してみることにします。(うまくスクリプトが動いていればコンテナ停止時にコンテナ内の /var/www/html
配下のファイルが /backup/data
へ同期されて見えるようにっているはずです)
そこで config.php
というファイルが作成されているのを見つけ開いてみると案の定、http://
で設定されていました。オンラインインストール時にこのURLで登録されたのでしょうか。
// path
$config['site_path'] = '/var/www/html';
$config['site_url'] = "http://onethirdcms-g9gtarhtafc3dte9.japaneast-01.azurewebsites.net/";
$config['site_ssl'] = "http://onethirdcms-g9gtarhtafc3dte9.japaneast-01.azurewebsites.net/";
$config['files_path'] = '/var/www/html/files';
$config['files_url'] = "http://onethirdcms-g9gtarhtafc3dte9.japaneast-01.azurewebsites.net/files/";
config.php
の当該箇所を修正して再アップロード。サービスを起動しなおします。
開発ツールを起動しながらページを開くと、今度は Mixed Contentエラーは出なくなりました。スタイルシートのリンクも https://…
に切り替わっています。:-)
これでイケるのかも!と思って /login
へアクセスしてみたのですが何とエラーも何も出ずホームページのまま。ログイン画面へ遷移しなくなってしまいました。開発者ツールにはエラーは出ない。ログイン画面が表示されない。状況は悪化してしまいました。
これ以上は内部の仕組みを調べながらでないと難しそう。今度こそあきらめることにします。ここまで読んでいただきありがとうございました。ということで OneThirdCMSを動かしたい方は実績のあるレンタルサーバを使いましょう。さよなら。
追記
ローカル環境ではログインしてCMSとして使えそうなので、ローカル環境で作成した資材を Azure App Service の公開フォルダへアップロード(config.phpを除いて)するという手が使えるかもしれません。ちょっと手間ですがローカルPC側の backup.sh で工夫すれば自動で同期をとるといった方法も使えるかもしれませんね。