2026年11月13日
2026年11月13日
WordPressの「open_basedir restriction in effect」解決
はじめに
「open_basedir restriction in effect」は、WordPressサイトで頻繁に遭遇するエラーメッセージの一つです。このエラーは通常、PHPのセキュリティ設定が厳しくなっていることを示しています。この記事では、このエラーを解決するための手順とその背景について詳しく解説します。
症状・背景
このテーマが必要になる主な場面:
- WordPressサイトが「open_basedir restriction in effect」エラーで表示されない場合
- ネットワーク設定やサーバー環境変更後に急にアクセスできなくなった場合
- セキュリティレベルを上げた結果、一部のファイル操作が制限された場合
手順・設定方法
ステップ1: PHP設定ファイルの確認
# Apacheの場合、通常以下のようなパスにiniファイルがあります。
cat /etc/php/7.4/apache2/php.ini
# Nginxの場合、php-fpmの設定ファイルを確認します。
cat /etc/php/7.4/fpm/pool.d/www.conf
ステップ2: open_basedirの値を追加または変更
# 現在のopen_basedirの値を確認します。
grep ^open_basedir /etc/php/7.4/apache2/php.ini
# 必要なディレクトリパスを追加します。例えば、WordPressがインストールされているディレクトリとそのサブディレクトリを指定します。
sed -i 's/open_basedir=.*$/open_basedir=/var/www/html:/path/to/wordpress:/tmp/' /etc/php/7.4/apache2/php.ini
# ファイル変更後、PHP設定ファイルの確認を再度行います。
grep ^open_basedir /etc/php/7.4/apache2/php.ini
ステップ3: ApacheまたはNginxの設定ファイル更新と再起動
# Apacheの場合、VirtualHost設定ファイルを探します。通常は以下のようなパスにあります。
cat /etc/apache2/sites-available/000-default.conf
# 必要なディレクトリパスをopen_basedir設定に追加します。
sed -i 's/php_admin_value open_basedir.*$/php_admin_value open_basedir \/var\/www\/html\:\path\/to\/wordpress/' /etc/apache2/sites-available/000-default.conf
# Nginxの場合、locationブロック内にopen_basedir設定を追加します。
sed -i 's/include_path.*/include_path = "\.::\/path\/to\/wordpress";/' /etc/php/7.4/fpm/pool.d/www.conf
ステップ4: サーバーの再起動
# Apacheを再起動します。
systemctl restart apache2
# Nginxを再起動します。
systemctl restart nginx
注意事項
- サーバーセキュリティ: open_basedir設定は、PHPスクリプトが指定されたディレクトリ外のファイルシステムにアクセスできないようにするためのものです。適切なパスだけを追加することが重要です。
- パフォーマンス: ディレクトリ構造やパスの長さを考慮し、必要最小限のディレクトリパスのみを使用しましょう。これは、サーバーの性能に影響を与える可能性があります。
- 複数のサイト: 複数のWordPressインストールがある場合、それぞれに対して適切なopen_basedir設定が必要です。
まとめ
1. 確認: PHPとウェブサーバーの設定ファイルを確認し、必要なディレクトリパスが追加されているか確認します。
2. 修正: 必要なディレクトリパスをopen_basedir設定に追加または変更します。
3. 再起動: サーバーソフトウェアを再起動して変更を適用します。
4. テスト: WordPressサイトが正常に表示され、機能するか確認します。
関連記事: