[手順] PHP スクリプトで "open_basedir" エラーが発生します。修正方法を教えてください。

Created:

2016-11-16 13:22:41 UTC

Modified:

2017-08-16 17:11:36 UTC

7

Was this article helpful?


Have more questions?

リクエストを送信

[手順] PHP スクリプトで "open_basedir" エラーが発生します。修正方法を教えてください。

Applicable to:

  • Plesk for Linux/Unix
  • Plesk 11.5 for Windows

原因

このエラーは、PHP スクリプトが アクセスの許可されていないフォルダに対してアクセスを試みたことにより発生します。 セキュリティ上の理由から、Parallels Plesk Panel でホストされるドメインの PHP オプションでは、デフォルトで /tmp フォルダと http(s)docs フォルダへのアクセスのみが許可されています。この制約は、PHP 変数 open_basedir で、各ホストに対して個別に設定されています。

解決策

特定のホストから追加のフォルダへの、PHP スクリプトによるアクセスを許可する必要がある場合は、仮想ホストの 'open_basedir' オプションに新しいパス値を設定します。このとき、フォルダ名はコロンで区切ります。(下記参照)

警告: これにより、サーバが悪用されるリスクが生じる可能性があります。設定の変更によりどのような影響が生じるか理解したうえで行ってください。


Parallels Plesk Panel 10.3 およびそれ以降のバージョン:

PP ウェブインターフェースで行います。以下の KB 記事を参照してください。

113861 [Info] Customizing PHP settings for a particular domain in PP 10.3 and later versions


PP 10.3 より前のバージョン:

この作業を実行できるのは、ドメインの vhost.conf ファイルまたは vhost_ssl.conf ファイル(SSL 仮想ホスト)への root 権限を持つユーザに限られます。詳しくは、Parallels Plesk Panel マニュアルの「 Including Directives into Configuration File of Web Serve
」を参照してください。

これらの変更を適用後、Apache の構成ファイルを再作成し、以下のシェルコマンドを使用して Apache サービスを再起動します。 vhost(_ssl).conf ファイルが見つかったら、ドメインの httpd.include ファイルに自動的に追加されます。

PP 10.x では次のコマンドを試用します。
~# /usr/local/psa/admin/sbin/httpdmng --reconfigure-all


バージョン 9.x およびそれ以前のバージョンでは、次のコマンドを使用します。
~# /usr/local/psa/admin/sbin/websrvmng -a -v


注記: 上のコマンドを実行しないと、 vhost.conf または vhost_ssl.conf が Apache 構成に追加されず、変更は適用されません。

例:

注: HTTPD_VHOSTS_D は、ドメインのロケーションへの実際のパスに置き換える必要があります。このパスは、OS や Parallels Plesk Panel バージョンに応じて異なります。現在の値は /etc/psa/psa.conf ファイルで確認できます。 ADD_PATH は、アクセス権限を付与するフォルダの実際のパスに置き換える必要があります。

HTTPD_VHOSTS_D/domain.com/conf/vhost.conf を作成します。

---8<---

php_admin_value open_basedir HTTPD_VHOSTS_D/domain.com/httpdocs:/tmp:/ADD_PATH


--->8---

HTTPD_VHOSTS_D/domain.com/conf/vhost_ssl.conf を作成します。

---8<---

php_admin_value open_basedir HTTPD_VHOSTS_D/domain.com/httpsdocs:/tmp:/ADD_PATH


--->8---

サブドメインに対して、対応する HTTPD_VHOSTS_D/domain.tld/subdomains/subdomain/conf/vhost.conf ファイルを作成します。

---8<---

php_admin_value open_basedir "HTTPD_VHOSTS_D/domain.com/subdomains/subdomain/httpdocs:/tmp:/ADD_PATH"


--->8---

また、必要な特定のロケーションに対して /etc/php.ini で 'open_basedir' をグローバルに設定することもできます。

---8<---
open_basedir = "/tmp"
--->8---

php.ini の変更後、Apache を再起動します。

他にご質問がございましたら、リクエストを送信してください
ログインしてコメントを残してください。