web-dev-qa-db-ja.com

有効なopen_basedir制限。ファイル(/)は許可されたパス内にありません:

サイトでアバターをアップロードすると、このエラーが発生します。私は以前にそれを手に入れたことがなく、このエラーを取得するために最近変更されたものはありません...

Warning: is_writable() [function.is-writable]: 
open_basedir restriction in effect. 
File(/) is not within the allowed path(s):
76
Webnet

ホスティングアカウントのopen_basedir設定を変更し、noneに設定します。 Plesk/cPanelの[PHP設定]エリアの下にあるopen_basedir設定を見つけます。そこに表示されるドロップダウンから「なし」に設定します。 Pleskパネルの写真にそれらを示しました。

enter image description hereenter image description here

91
yogihosting

このエラーを解決するには、httpd.confファイルを編集する必要があります。 Apache2handlerセクションディレクティブServer Rootのphpinfoで確認できるようになる前の方法。たとえば、私の場合はこのように-/ etc/httpd/httpd.conf。ファイルhttpd.confを開き、パラメーターopen_basedirの言及を見つけます。そして、それをnoneに設定します。 (php_admin_value open_basedir none

35
Andrei

私にとっての問題は、全体を実行しているPleskサーバーの設定値が間違っている/見つからないことでした。私はここの指示に従いました: http://davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/

PHPを構成して、VirtualHost定義ごとに個別のエラーログファイルを作成できます。 Pleskを壊さずに設定に直接触れることはできないため、コツは設定方法を正確に知ることです。 (dv)のすべてのドメイン名には、/ var/www/vhostsに独自のディレクトリがあります。典型的なディレクトリには、次の最上位ディレクトリがあります。

cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on

次の行を使用して、ドメインディレクトリのconf /フォルダーにvhost.confファイルを作成します。

php_value error_log /path/to/error_log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on

実際のインストールに合わせて最初の値を変更します(/tmp/phperrors.logを使用しました)。 vhost.confファイルの編集が完了したら、次を使用してコンソールから設定をテストします。

apachectl configtest
…or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)…

/etc/init.d/httpd configtest

最後に、この変更を行ったことをPleskに伝えます。

/usr/local/psa/admin/bin/websrvmng -a
5
Josh P

php file.phpでこれを実行している場合。編集する必要がありますphp.iniこのファイルを検索:

: locate php.ini
/etc/php/php.ini

そして、ファイルのパスをopen_basedirプロパティに追加します。

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected

3
deathangel908

更新や移動後にwordpressサイトの1つでこの問題が発生しました:)

データベーステーブル 'wp_options'の 'upload_path'をチェックして、適切に編集してください...

2
Bartuzz

参照しているパスは不正確であり、ワークスペースのdirectoryRootを使用していません。アクセスしたいファイルの絶対パスを作成してみてください。ここではおそらく相対パスを使用しています...

2
NDM

ispconfig3でこの種の問題があり、このようなエラーが発生した場合

有効なopen_basedir制限。ファイル(/ var/www/clients/client7/web15)は許可されたパス内にありません:.........

それを解決するには(私の場合)、ispconfig3のWebサイトのパネルでPHPをSuPHPに設定するだけです。

それが誰かを助けることを願っています:)

2
Qlimax

@ yogihosting's answer に加えて、DirectAdminを使用している場合は、次の手順に従います。

  1. DirectAdminのログインページに移動します。通常、そのポートは2222です。
  2. 管理者としてログインします。そのユーザー名はデフォルトでadminです。
  3. 右側のパネルの「アクセスレベル」から、「管理者レベル」にいることを確認します。そうでない場合は、それに変更します。
  4. [追加機能]セクションで、[カスタムHTTPD構成]をクリックします。
  5. 変更するドメインを選択します。
  6. ページ上部のテキストエリアに変更する構成を入力します。既存の構成ファイルを検討し、それに基づいて値を変更する必要があります。たとえば、open_basedir<Directory>内に設定されている場合、関連する<Directory>タグで変更を囲む必要があります。

    <Directory "/path/to/directory">
        php_admin_value open_basedir none
    </Directory>
    
  7. 必要な変更を行った後、「保存」ボタンをクリックします。

  8. 変更が有効である場合、構成ファイルに保存された変更が表示されます。

ただし、構成ファイルを編集する別の方法があります。

注意:エラーに遭遇したり、ダウンタイムにつながる可能性があるため、ご自身の責任で次の手順を使用してください。推奨される方法は前の方法です。これは、構成ファイルを不適切に変更してエラーを表示することを防ぐためです。

  1. ルートとしてサーバーにログインします。
  2. /usr/local/directadmin/data/usersに移動します。リストされたユーザーから、変更するドメインに関連するユーザーに移動します。
  3. ここには、httpd.confファイルがあります。それからバックアップを作成します。

    cp httpd.conf httpd.conf.back
    
  4. 選択したエディターで構成ファイルを編集します。たとえば、既存のopen_basedirnoneに編集します。物を取り除こうとしないでください。ダウンタイムが発生する可能性があります。編集後にファイルを保存します。

  5. 以下のいずれかの方法を使用して、Apache Webサーバーを再起動します(必要に応じてSudoを使用します)。

    httpd -k graceful
    apachectl -k graceful
    Apache2 -k graceful
    
  6. エラーが発生した場合は、メインの構成ファイルをバックアップファイルに置き換え、Webサーバーを再起動します。

繰り返しになりますが、最初の解決策が優先されるため、最初に2番目の方法を試してはいけません。注意事項に記載されているように、最初の方法の利点は、不適切に構成されたものを保存しないことです。

それが役に立てば幸い!

0
MAChitgarha

PHP IIS stackを実行していて、このエラーが発生した場合、通常は簡単な権限修正です。

Windowsサーバーを自分で管理してアクセスできる場合は、最初にこれを試してください。

書き込みに関する悲しみを与えているフォルダーに移動し、右クリックして[プロパティ]> [セキュリティ]を開きます。

フォルダーにアクセスできるユーザー、読み取り専用ユーザー、完全ユーザーを確認します。書き込みをブロックしているグループがありますか?

修正はIISセットアップに固有のものになります。特定のユーザーIUSRまたはアプリケーションプールIDで匿名認証を使用していますか?

とにかく、IUSR、IIS_IUSRS、またはアプリケーションプールIDのいずれかに新しい完全な書き込みアクセス許可を追加することになります。前述したように、これはセットアップとその方法によって異なります。あなたはこの1つでGoogleのウサギの穴に行くことができます(そのような投稿の1つ- IIS8のIIS_IUSRSおよびIUSR権限 )私にとって、私は一時フォルダまたはアップロードフォルダで完全な読み取り/書き込みを行うMACHINE_NAME\IIS_IUSRSを使用します。

Php.iniのopen_basedir =に追加のものを追加する必要はありません。

0
RobDigital