目次
Concrete5移転引っ越し時にエラー。共用エックスサーバーではオーナー権限を変更できず断念
Concrete5にて作成した本番環境からファイルおよびデータベースのバックアップを取得し
別のテスト環境を構築、テスト環境にてインポートをさせるという
リストア・引越し作業のときでのことです。
環境としては、本番環境としてエックスサーバー上にConcrete5を構築、本番として運用をしていました。
その後、少しリスキーな調整が必要となり、別途テスト環境を構築する必要が発生。
エックスサーバー(本番)→エックスサーバー上の別ドメイン(テスト環境)
へと、ファイル&データベースをインポートする際にエラーが出てしまったのです。
いろいろ試した結果、そのままエックスサーバー上で同一のテスト環境を構築することは難しいと判断。
サーバー種類を変更して、エックスサーバーではなくConoHa VPS上でリストア・引っ越し作業を行うことで、無事に同一のテスト環境を構築することができました。

エラーなくアップロード・インストールするために、↓こちらの記事もご参照ください。
Concrete5を「エラーなく」インストールする方法【エックスサーバー】 | 魔法使いのWebマーケティング
以下、Concrete5のリストア・引っ越し作業にて発生したエラーとその解消方法の形をご説明ししていきます。
移転前にファイルの権限設定を見直す
まず、Concrete5のバックアップ&リストア・引越し時にはファイルの権限設定を見直す必要があります。
引越し時の注意事項や、パーミッション設定の詳細は下記のサイトからご確認ください。
バックアップ&リストアの流れの記載があります。
サイトの移転 :: concrete5 Japan 日本語公式サイト
concrete5★サイトを引っ越したときに注意すること – WEB-Geek-Site.com
復元先でパーミッションエラー発生
さて、公式サイト通りにConcrete5ファイル一式とデータベースをエクスポートしローカルへ保存。
それらをテスト環境(エックスサーバー)へアップロード・インポートしました。
その後指定ファイル・フォルダのパーミッションを755に設定し直したうえでサイトを訪問すると
リストア先(テスト環境: エックスサーバー)にて、下記のエラーメッセージが表示されました。
Whoops\Exception\ErrorException thrown with message "mkdir(): Permission denied"
Concrete5が新たにディレクトリ作成・書き込みをしようとしているものの
権限がなくディレクトリを作成できない様子。
参考: mkdir(): Permission denied – concrete5
ここでの対応方法としては
- 指定フォルダ下のファイル権限をすべて、755または644とする
- キャッシュフォルダ内のキャッシュファイル(application/files/cache)をすべて消去する
- PHPバージョンを確認する
- 最悪、一旦指定ファイル・フォルダの権限を一時的に777または766と緩めて対応する
これらを試したのですが、いずれを行ってもエラー解消できず。
「パーミッション拒否された」と表示されたエラー内容を見てみると
エラー箇所としてルートディレクトリを指定するものとなっていました。
エックスサーバーや共用サーバーでは、ユーザーグループの設定ができません。
ユーザー権限、オーナー権限の関係で、Concrete5がディレクトリを作成、ファイルへの書き込みができないのではと判断しました。
そこでエックスサーバー環境でのテスト環境構築を諦め、VPSであるConoHa VPSでの環境構築を試みます。
(2022/08/22追記)Concreteサイトファイルが完全にアップロードされていなかった可能性
後日、エックスサーバー上でデータベースファイル(MySQL)をphpMyAdminでインポートし、圧縮したConcreteパッケージファイルを移転後サーバーで展開したところ、何の問題もなく復元することができました…!
上記エラーが出たやり方では、FTP経由でConcreteサイトファイルをアップロードしていたため、恐らくいずれかのファイルがうまく復元できていなかった恐れがあります。(Concreteはファイル数が膨大なので、FTP経由でアップロードを行うとエラーがよく発生します。)
Concrete5を「エラーなく」インストールする方法【エックスサーバー】 でもご紹介している通り、SSHでエックスサーバーの自分の領域へ接続。
Concrete5日本語公式サイトが推奨しているとおり、下記のコマンドを利用してzipファイルを作成しましょう。
$ tar czfv site_copy.tgz public_html/
サイトの移転 :: Concrete CMS Japan 日本語公式サイト (旧 concrete5) https://concrete5-japan.org/help/5-7/developer/installation/moving-a-site/
作成されたcopy.tgzファイルはscpなどのコマンドを用いて、移転後サーバーの公開用フォルダ直下にダウンロードします。
移転後サーバーにログインし、下記コマンドで解凍します。
$ tar -xvzf site_copy.tgz
データベースファイルについてはphpMyAdminでインポートする形で良いでしょう。
ConoHa VPSでテスト環境を構築。Concrete5引越しリストア時のエラーを解消した方法
Concrete5アプリケーションイメージを利用して、すぐにVPS環境を構築
VPSの中でConoHa VPSを選択したのは、Concrete5のアプリケーションイメージを利用することで
環境設定の時間を大幅にショートカットできるからです。
これを利用することで、あらかじめConcrete5に最適な形で構成された環境をすぐに利用可能。
具体的なインストール手順やおすすめのプランについては、↓の記事をご参考にしてください。
もしインストール作業中にどこか失敗をしてしまったとしても
ConoHa独自の下記コマンドで、Concrete5インストール前の状態に戻すことが可能です。
# concrete5 c5:reset && chown apache -R /var/www/html/application/files
concrete5アプリケーションイメージの使い方|ConoHa VPSサポート
また、ConoHa VPSのConcrete5アプリケーションイメージによって構築した場合
Concrete5ファイル一式の場所は
/var/www/html
となります。
Concrete5引越しリストア時のエラー解消方法
エックスサーバーの時と同様に、公式サイトの手順にしたがってファイルとデータベースを移行。
その後に公式のとおり、指定ファイル・フォルダの権限を755に設定し直します。
すると、エックスサーバーの時とは異なるエラーメッセージが表示されました。
【ConoHa VPS環境下Concete5のエラーメッセージ】
Stash\Exception\InvalidArgumentException thrown with message "Failed to create cache path."
どうやら、キャッシュフォルダへのパスが上手く設定できていないよう。
【解決方法】
/var/www/html/application/files/cache
のcacheフォルダのパーミッション権限を緩めたところ、エラー解消。ページが表示されました。
【他にもやったこと】
・cacheファイルの中身を削除
・html以下のオーナーと所属グループをrootユーザーに変更
【参考】
データ移行時に、「Cache path is not writable」及び「mkdir(): Permission denied」エラー :: concrete5 Japan 日本語公式サイト
親ディレクトリにPHPを実行しているhttpdの実行権限がない場合もあります。
.user.iniファイルや、.htaccessファイルを1階層上に上げるなどして、権限を付与すると解決する場合もあります。
これで、サイトが無事に表示され管理画面へのログインを行うことができました。
一旦は無事に引越しリストア作業を終えることに。
Concrete5の動作テストをしてみると、エラーが多発。パーミッション権限設定を見直す
Concrete5移転後の動作確認は必須
さて、無事にサイトは表示されているものの、公式サイトには「移転後の動作確認をせよ」との注意書きがあります。
サイトの移転 :: concrete5 Japan 日本語公式サイト
具体的な動作確認の内容としては
- 管理画面からキャッシュをクリアする。
- ファイルマネージャーにファイルをアップロードする。
- 「自動実行ジョブ」を実行する
- ページの編集をしてみる(ページの変更をして、保存ができるかどうか)
こちらの4点をそれぞれ試した後、きちんとサイトが表示されるか動作確認をするようにとのことでした。
キャッシュのクリアとページ編集のエラー対応方法
まず、キャッシュをクリアすると、以下のメッセージ。
【エラーメッセージ】
Whoops\Exception\ErrorException thrown with message "file_put_contents(/var/www/html/application/config/generated_overrides/concrete.php): failed to open stream: Permission denied"
また、ページの編集と公開をすると、以下のエラーメッセージ。
【エラーメッセージ】
file_put_contents(/var/www/html/application/config/generated_overrides/concrete.php): failed to open stream: Permission denied
上記2つのエラーについては、下記の対応で解消ができました。
【解決方法】
/var/www/html/application/config/generated_overrides/
のgenerated_overridesのフォルダと、その直下の各ファイルに書き込み権限を与える。
(generated_overridesフォルダ以下のパーミッションを緩めた)
ファイルマネージャーから写真がアップロードできないエラーの対処方法
ファイルマネージャから写真をアップロードしようとすると、以下のエラーが表示されアップロード出来ません。
【エラーメッセージ】
ファイルをファイル保存場所 “Default” にコピーできません。保存場所の設定を確認してください。
【解決方法】
/var/www/html/application/files/
の以下のすべてにフォルダについて、フォルダパーミッション権限を緩めた。
自動実行ジョブから、サイトマップに自動書き込みできない
【解決方法】
/var/www/html/sitemap
の権限を755ではなく、さらにパーミッションを緩めた。
(これはあんまり良い方法ではないです…!)
パーミッション緩めまくりなのでセキュリティ的にはかなり気になるところではありますが…!
まずはテスト環境ということで、一旦上記対応で動作はしています。
ユーザーグループ権限を見直してみたりすることで、より良い解決方法があるかもしれません。
一旦私は上記で無事に動作確認できましたので、お困りの方のお役に立てれば幸いです。
Leave a Reply