GNU/Linux >> Linux の 問題 >  >> Panels >> cPanel

PHPスクリプトopen_basedir効果エラーの制限

PHP open_basedir保護の調整は、フォルダが特に除外されていない限り、ユーザーがホームディレクトリの外にあるファイルやスクリプトをPHPで開くことを防ぐセーフモードのセキュリティ対策です。 PHP open_basedir設定を有効にすると、すべてのファイル操作が特定のディレクトリ内のファイルに制限されるようになり、特定のユーザーのphpスクリプトが許可されていないユーザーのアカウントのファイルにアクセスできなくなります。スクリプトがfopen()やgzopen()などを使用してファイルを開こうとすると、ファイルの場所がチェックされます。ファイルが指定された、または許可されたディレクトリツリーの外にある場合、PHPはファイルを開くことを拒否し、次のエラーが発生する可能性があります。

警告:file_exists()[function.file-exists]:open_basedir制限が有効です。ファイル(/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg)が許可されたパス内にありません:(/ home / user_name:/ usr / lib / php:/ usr / local /home/user_name/public_html/wp-admin/inline-uploading.phpの226行目の/lib/ php:/ tmp)

上記のエラーメッセージは、WordPressブログをホストしているApache httpd Webサーバーのエラーログ(error_log)に表示されます。ただし、この問題は、スクリプト言語としてPHPを使用するすべてのシステムまたはWebサイトで発生する可能性があります。

open_basedir制限の問題の解決策または回避策は、PHP open_basedir保護を完全に無効にするか、特定の特権ユーザーアカウントの保護を除外するか、PHPスクリプトの追加ディレクトリへのアクセスを許可することです。

cPanel WebHost Manager(WHM)を使用している場合は、PHP open_basedir保護を簡単に無効にしたり、WHMによる保護から特定のユーザーを除外したりできます。 [セキュリティ]セクションの[セキュリティの調整]に移動し、[Phpopen_basedirTweak]の[構成]リンクを選択します。その中で、php open_basedir Protectionを有効または無効にしたり、保護からホストを除外して含めたりすることができます。

Pleskホスティングコントロールパネルを使用している場合は、vhost.confおよびvhost_ssl.confのApache構成ファイルを手動で編集し、次のphp_admin_valueopen_basedir行を次の行に追加または編集する必要がある場合があります。

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir none
</Directory>

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp
</Directory>

注:vhost_ssl.confファイルのSSLホストの場合、ディレクトリパスは「httpdocs」ではなく「httpsdocs」で終わります。

open_basedirの背後にあるパス(上記は単なる例であり、実際のパスに置き換えられます)は、vhostドメインアカウントのPHPスクリプトがアクセスできるようにするディレクトリであるため、ファイルが保存され、必要なディレクトリをさらに追加できます。 PHPによって開かれ、それぞれが色「:」で区切られます。ただし、システムがセキュリティ詐欺にさらされる可能性があるため、注意してください。

完了したら、以下のコマンドを実行して変更を有効にし、Apache httpd Webサーバーを再起動します(apache2ctlrestartまたはhttpdrestart):

$PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a

PHP open_basedir保護を無効にするためにApache構成ファイルを手動で編集する必要がある場合は、httpd.confファイルを開き、次の文字で始まる行を検索します。

php_admin_value open_basedir …..

保護を無効にするドメインユーザーアカウントの仮想ホストの下の行全体を、無効にするには次の行に置き換えます。

php_admin_value open_basedir none

保護を無効にする代わりに、PHPスクリプトが追加のディレクトリにアクセスできるようにすることもできます。色「:」で区切って、追加のディレクトリを行に追加できます。たとえば、許可リストに/ new_directoryを追加するには:

php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp"
php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_directory"

編集が終了したら、Apacheを再起動します。上記のディレクトリ許可リストの制限は、実際にはプレフィックスであり、ディレクトリ名ではないことに注意してください。つまり、「open_basedir =/ dir / incl」では、「/ dir/include」および「/dir/incls」(存在する場合)にもアクセスできます。指定したディレクトリのみへのアクセスを制限する場合は、スラッシュで終了します。例:「open_basedir =/ dir /incl/」。


cPanel
  1. Bashスクリプトでのエラー処理

  2. 未定義の関数simplexml_load_file()の呼び出し–PHPエラー[解決済み]

  3. pspellが見つかりません–PHP構成エラーを修正します

  1. 警告:file_exists()[function.file-exists]:open_basedir制限が有効です。

  2. コマンドラインからPerl/PHPスクリプトを実行する

  3. 致命的なエラー:未定義関数 mb_substr() の呼び出しエラー

  1. Plesk11でPHPエラーロギングを有効にする方法

  2. PHPエラーログをオンにする方法

  3. PHP5-Curl インストールエラー インストール候補なし