WordPress サイトに Staging 環境を作成すると、ライブサイトの安定性を損なうリスクなしに、変更・更新・新機能をテストできます。WP Staging は、WordPress インストールのサブディレクトリに Staging サイトを作成できる人気の Plugin です。
この処理中に open_basedir 制限のエラーに遭遇することがあり、WordPress のルートディレクトリ内に Staging サイトを作成できなくなる場合があります。このエラーは PHP の設定にあるセキュリティディレクティブに関連しており、PHP がアクセスできるファイルを特定のディレクトリとそのサブディレクトリに限定するものです。本記事では、この問題を解決し、Staging サイトの作成を成功させる手順を解説します。
Contents
注意: WP Staging Pro で既定の Staging サイトを作成しようとしてこのエラーが発生する場合は、詳細設定 を使って「wp-content」のサブフォルダ内に Staging サイトを作成できます。そうすれば、ここから先は読まなくても問題ありません。
open_basedir 制限について
open_basedir ディレクティブは php.ini ファイルに実装されているセキュリティ対策で、PHP のファイルアクセスを指定したディレクトリに制限します。WP Staging が open_basedir のパスに含まれていないディレクトリに Staging サイトを作成しようとすると、この制限エラーが発生します。
open_basedir 制限エラーの修正方法
open_basedir 制限のエラーを解決し、WP Staging で Staging サイトを正常に作成するには、以下の手順に従ってください。
ステップ 1: php.ini ファイルの場所を確認する
php.ini ファイルは PHP の設定ファイルです。その場所は Hosting 環境によって異なります。一般的な場所としては、Hosting アカウントのルートディレクトリや、PHP のバージョン用の特定のディレクトリ内などがあります。正確な場所については、Hosting プロバイダのドキュメントやサポートに確認してください。
ステップ 2: open_basedir ディレクティブを変更する
php.ini ファイルを見つけたら、Staging サイトを作成したいディレクトリを含めるように編集します。php.ini ファイルをテキストエディタで開き、open_basedir で始まる行を探してください。WordPress ルートディレクトリ(およびそのサブディレクトリ)への完全パスを、既存のリストに追加します。複数のパスは、Linux ではコロン :、Windows ではセミコロン ; で区切ります。
たとえば、WordPress が /var/www/html/wordpress にインストールされており、php.ini の open_basedir 設定行が次のようになっている場合、
open_basedir = "/var/www/html/"これを WordPress のディレクトリを含むように修正する必要があります。
open_basedir = "/var/www/html/:/var/www/html/wordpress/"ステップ 3: ウェブサーバーを再起動する
php.ini ファイルの変更を保存した後、変更を反映させるためにウェブサーバーを再起動する必要があります。サーバーを再起動する手順は、Hosting 環境と使用しているサーバーソフトウェアによって異なります。一般的なウェブサーバーには Apache と Nginx があります。Hosting コントロールパネルを使うか、Hosting プロバイダのドキュメントを参照してください。
ステップ 4: Staging サイトの作成を再試行する
ウェブサーバーの再起動後、WP Staging で Staging サイトの作成を再度試してください。open_basedir 制限のエラーは解消され、作成処理が問題なく進むはずです。
まとめ
open_basedir 制限は重要なセキュリティ機能ですが、WordPress サイトの Staging 環境の作成といった正当な処理を妨げることもあります。php.ini ファイルを慎重に編集し、ウェブサーバーが変更を認識するようにすることで、このハードルを乗り越えられます。変更前には必ず php.ini ファイルの Backup を取り、自分で変更を加えるのに不安がある場合は Hosting プロバイダにご相談ください。この方法であれば、目の前の問題を解決しつつ、サーバー環境のセキュリティ整合性も維持できます。