自分のサイトのアバターアップロードでこのエラーが発生します。私はこれまでにそれを取得したことがなく、このエラーが発生し始めるために最近何も変更されていません...
Warning: is_writable() [function.is-writable]:
open_basedir restriction in effect.
File(/) is not within the allowed path(s):
回答:
PHP構成のopen_basedir
設定を変更します(ランタイム構成を参照)。
このopen_basedir
設定は主に、特定のユーザーのPHPスクリプトが別のユーザーのアカウントのファイルにアクセスできないようにするために使用されます。したがって、通常、自分のアカウントのファイルはすべて、自分のスクリプトで読み取ることができます。
.htaccess
PHPがLinuxシステムでApacheモジュールとして実行される場合の設定例:
<DirectoryMatch "/home/sites/site81/">
php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
</DirectoryMatch>
/my/cutsom/dir/
。なぜ考えたのかわからない。
php_admin_value
に.htaccess
ファイル。.htaccessファイルでDirectoryMatchを使用することはできません。(open_basedir
無効にできるとしたら、どのようなセキュリティ対策が必要ですか?)
このエラーを解決するには、ファイルhttpd.confを編集する必要があります。phpinfoのapache2handlerセクションディレクティブサーバールートで確認できるようになるずっと前のことです。たとえば、私の場合はこのように-/ etc / httpd /httpd.conf。ファイルhttpd.confを開き、パラメーターopen_basedirの記述を見つけます。そして、それをnoneに設定します。(php_admin_value open_basedir none)
open_basedir
構成を見つけましたphp.ini
。(
これをで実行している場合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
私にとっての問題は、すべてを実行しているPleskサーバーの設定値が悪い/欠落していることでした。私はここの指示に従いました:http: //davidseah.com/blog/2007/04/separate-php-error-logs-for-multiple-domains-with-plesk/
VirtualHost定義ごとに個別のエラーログファイルを持つようにPHPを構成できます。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
更新および/または移動した後、私のワードプレスサイトの1つでこの問題が発生しました:)
データベーステーブル 'wp_options''upload_path'をチェックインし、適切に編集します...
ispconfig3を使用する場合:
Webサイトセクション->オプション-> PHP open_basedirに移動します:
/ var / www / clients / client2 / web3 / image:/ var / www / clients / client2 / web3 / web:/ var / www / ...など
/ var / www / clients / client2 / web3 / image:
スクリプトがファイルシステムにアクセスしようとすると、たとえばincludeまたはfopen()を使用して、ファイルの場所がチェックされます。ファイルが指定されたディレクトリツリーの外にある場合、PHPはそのファイルへのアクセスを拒否します。
PHP IISスタックを実行していてこのエラーが発生した場合、通常は簡単なアクセス許可の修正です。
Windowsサーバーを自分で管理してアクセスできる場合は、最初に次のことを試してください。
書き込みに苦痛を与えているフォルダに移動し、右クリック>プロパティを開く>セキュリティ。
どのユーザーがフォルダーにアクセスできるか、どのユーザーが読み取り専用で、どれがいっぱいかを確認します。書き込みをブロックしているグループがありますか?
修正はIISセットアップに固有ですが、特定のユーザーIUSRまたはアプリケーションプールIDで匿名認証を使用していますか?
いずれにせよ、IUSR、IIS_IUSRS、またはアプリケーションプールIDのいずれかに新しい完全な書き込みアクセス許可を追加することになります-私が言ったように、これはセットアップとそれをどのように行うかによって異なります、これでグーグルのうさぎの穴を掘り下げることができます(そのような投稿の1つ-IIS8のIIS_IUSRSとIUSRのアクセス許可)私にとっては、アプリプールIDでanonを使用しているのでMACHINE_NAME\IIS_IUSRS
、任意の一時またはアップロードで完全な読み取り/書き込みを行うことができますフォルダー。
open_basedir =
php.iniに何かを追加する必要はありません。
@yogihostingの回答に加えて、DirectAdminを使用している場合は、次の手順に従います。
admin
デフォルトです。ページ上部のテキスト領域に変更する構成を入力します。既存の構成ファイルを検討し、それに基づいて値を変更する必要があります。たとえば、それopen_basedir
がの中に設定されている<Directory>
場合は、関連する<Directory>
タグで変更を囲む必要があります。
<Directory "/path/to/directory">
php_admin_value open_basedir none
</Directory>
必要な変更を加えた後、「保存」ボタンをクリックしてください。
ただし、構成ファイルを編集する別の方法があります。
注意:エラーが発生したり、ダウンタイムが発生したりする可能性があるため、注意して、自己責任で次の手順を使用してください。推奨される方法は、構成ファイルを不適切に変更してエラーを表示するのを防ぐため、前の方法です。
/usr/local/directadmin/data/users
ます。リストされたユーザーから、変更するドメインに関連するユーザーに移動します。ここにhttpd.conf
ファイルがあります。それからバックアップを作成します。
cp httpd.conf httpd.conf.back
次に、選択したエディターで構成ファイルを編集します。たとえば、existingopen_basedir
をに編集しnone
ます。物を取り除こうとしないでください。ダウンタイムが発生する可能性があります。編集後にファイルを保存します。
次のいずれかの方法を使用してApacheWebサーバーを再起動します(sudo
必要に応じて使用します)。
httpd -k graceful
apachectl -k graceful
apache2 -k graceful
エラーが発生した場合は、メインの構成ファイルをバックアップファイルに置き換えて、Webサーバーを再起動します。
繰り返しになりますが、最初の解決策が推奨される解決策であり、最初に2番目の方法を試すべきではありません。注意事項に記載されているように、最初の方法の利点は、構成が不適切なものを保存できないことです。
それが役に立てば幸い!
私は、Apache使用していますバーチャルホストの私のWindowsサーバー上のアプリケーション固有のINI-オプションでPHPを実行する-ファイルを。したがって、phpコマンドの-dオプションを使用します。
これらのオプションの1つとして、すべてのアプリケーションのopen_basedirを設定しています。
UNC-Pathを含む複数のURLをopen_basedirとして設定する必要があり、この場合の構文を見つけるのは少し困難でした。パスをセミコロンで区切る必要があります。最初のパスがドライブレターで始まる場合は、リストもセミコロンで始める必要があります。少なくともそれが私にとってはうまくいくことです。
例:
php.exe -d open_basedir=;d:/www/applicationRoot;//internal.unc.path/ressource/
検索するだけ
open_basedir =
php.iniで無効にします。これは、この問題を解決するための最も簡単な解決策です。
変更前 open_basedir =
変更後 ;open_basedir =
追伸-変更後は、サーバーを再起動することを忘れないでください。
楽しい ;)