web-dev-qa-db-ja.com

一時ディレクトリの構成

最近、ローカルホストからVPSにサイトを移動しました。公開ファイルと非公開ファイルを書き込み可能にできました。ただし、一時フォルダーの場所とアクセス許可の変更方法はわかりません。私はこのメッセージを受け取り続けます:

宛先ディレクトリーが正しく構成されていないため、指定されたファイルtemporary:// file3Hl91Eをコピーできませんでした。これは、ファイルまたはディレクトリの権限の問題が原因である可能性があります。詳細については、システムログを参照してください。

私はVirtualmin、Drupal 7、およびDebianサーバーを使用しています。現在の一時ディレクトリは/tmp

49
Jasmine Ahmed

アドミニストレーター->構成->メディア->ファイルシステムをチェックして、tmpパスをパーソナライズしてください。必ず相対パスを使用し、Apacheユーザーに適切な権限を付与してください。

私はこの記事を個人的に気に入っています fix file upload 。彼は良い観察をしています。それは私のために働いた。

最近、自分のサイトをMacコンピューターにダウンロードしました。私のMacでmod_userdir Apacheの場合、/etc/Apache2/users/nameofuser.conf設定する必要がありますAllowOverride All、それ以外の場合は、次のメッセージが表示されます。

宛先ディレクトリーが正しく構成されていないため、指定された一時ファイルをコピーできませんでした。

47
cayerdis

あなたのsettings.phpで

$conf['file_temporary_path'] = '/tmp';

これはUNIXシステムで99%の時間動作します。

通常、/ tmpディレクトリは、オープンアクセス権を持つUNIXシステムに存在し、一時ファイル専用に存在し、パフォーマンスを向上させるために設定されることがよくあります。

コマンドラインでls -al /tmpを実行すると、権限を確認できます。

これについてさらに読むことに興味がある場合は、 https://en.wikipedia.org/wiki/Temporary_folder を参照してください。

18
chim

指定した一時ディレクトリ(admin/config/media/file-systemで定義されている)とその一時ファイルがコピーされるフォルダーの両方に権限の問題が存在する可能性があることを理解することが重要です。私はこのエラーを数回見ましたが、通常は一時フォルダーの問題ではありませんが、そのファイルがコピーされる最終フォルダーafter一時フォルダーにあります。

また、パブリックファイルシステムのパスが正しく設定されていることを確認してください。

17
sheldonkreger

私はこの正確な問題を抱えており、提案どおりにtmpフォルダーの場所に相対パス(sites/default/files/tmp)を使用するようにしました。また、Apacheによって書き込み可能であることを確認するためにtmpフォルダーのアクセス許可も変更しましたが、私の問題はまだありました。 。そのため、ログメッセージ(レポート>>最近のログメッセージ)をチェックして、問題が何であるかをよりよく理解できるかどうかを確認することにしました。これを行うことで、より具体的なメッセージが表示されます。

ファイルの権限をpublic:// jsに設定できませんでした。

これにより、sites/default/filesのjsフォルダーのアクセス許可を確認するように求められ、Apacheは書き込みができないため、そのフォルダーのアクセス許可を775に変更して、エラーメッセージを削除しました。したがって、まだ問題を解決していない場合は、tmpフォルダーだけでなく、sites/default/filesのすべてのサブフォルダーの権限を確認することをお勧めします。私はこの情報を共有すると思いました。

7
Andew

ファイルシステムの設定はadmin/config/media/file-system/tmpに変更します

また、設定の問題について管理者/レポート/ステータスを確認できます

/ tmp権限については755を与えることができ、それは/ public_htmlにあります

5
Ahmed

エラーメッセージが原因で誤解を招く可能性があります

問題が宛先ディレクトリに関するものであると表示されている場合、Apacheはおそらく、Drupalがファイルを配置したくないという、sites/default/filesサブフォルダへの書き込み権限を持っていません。

良い解決策は、Apacheユーザーを、sites/default/filesの下のすべてのファイルとディレクトリの所有者にすることです。

cd /path/to/sites/default
Sudo chown -R _www:_www files

または、同様のものが宛先ディレクトリの問題を解決するはずです。所有者がすべてのサブディレクトリに対する書き込みおよび実行権限を持っていることを再確認してください。

2
chim

ファイルディレクトリ:ApacheベースのWebサーバーのトラブルシューティング

ディレクトリファイルがWebサーバーによって "所有"されていない場合は、2つの方法で続行できます。これらの手順は、Webサーバーへのシェルアクセス権があることを前提としています。シェルアクセスがない場合は、ホスティングプロバイダーに連絡して追加サポートを受けてください。

理想的には、Webサーバーの名前と一致するようにディレクトリファイルの「所有者」を変更できるようになります。 UnixまたはLinuxベースのサーバーでは、次のコマンドを発行して、Webサーバーが実行されている「ユーザー」を確認できます。

$ ps aux  |grep Apache # for Apache 2.x
$ ps aux  |grep httpd # for Apache 1.x

Webサーバーに応じて、これらのコマンドの1つは次のような一連の行を返します。

www-data 13612  0.1  0.9  50640 20340 ? S 12:29   0:08 /usr/sbin/Apache2 -k start

返されるテキストの最初の列は、Webサーバーが動作している「ユーザー」です。この場合、ユーザーはwww-dataです。ファイルディレクトリをWebサーバーから書き込み可能にするには、次のコマンドを使用して、その所有権を再割り当てする必要があります。

$ chown -R www-data sites/default/files
$ chmod -R 0700 sites/default/files

サーバーにフォルダーの所有権を変更するための十分なアクセス許可がない場合、次の最適なオプションは、次のコマンドを使用してフォルダーへのグループ書き込みアクセスを提供することです。

$ chmod -R 0770 sites/default/files

上記で概説したように、FTPプログラムを使用してディレクトリの権限を調整することもできます。

これらの手順を完了したら、[管理]-> [レポート]-> [ステータスレポート]に移動して、適切な権限が割り当てられていることを確認します。 「ファイルシステム」というラベルの付いたセクションまでスクロールし、設定が正しいことを確認します。

ソース: ファイルディレクトリ

2

状況によっては、default/files内の 'ctools'および 'js'フォルダーを削除することで簡単に修正できます。これらのフォルダは、必要に応じてシステムによって再作成されます。場合によっては、既存のサイトを新しくインストールするときに、これらの既存のフォルダが既に問題を引き起こしていることがあります。また、既存のサイトを新しくインストールした後CSSが機能しない場合は、これらのファイルを削除してdrupalを再作成することで解決できます。

2
Paul Trotter

私は既存の答えがどれも好きではないので、たぶん自分で始めて、時間の経過とともに更新するでしょう。主にシェルコマンドを使用します。

とりあえず、これをsites/example.com

MYSITE=example.com
FILES=sites/$MYSITE/files  
# CSS and JS might also cause trouble and advagg has its own dirs
TMPDIRS=$FILES/tmp $FILES/js $FILES/css $FILES/advagg_*
drush vset file_temporary_path $FILES/tmp # seems better than using /tmp
drush vset file_directory_temp $FILES/tmp
cd $(drush drupal-directory)   
chown www-data -R $TMPDIRS
chmod 755 -R $TMPDIRS
1
kqw

私の古い問題のある構成

chmod 664 -R /var/drupal-bc/sites/default/files
chmod 664 -R /var/drupal-bc/sites/default/private

drw-rw-r-- 2 www-data www-data  4096 Jul 31 12:35 files
drw-rw-r-- 3 www-data www-data  4096 Jul  5 15:08 private

私の新しい正常に動作する構成

chmod 774 -R /var/drupal-bc/sites/default/files
chmod 774 -R /var/drupal-bc/sites/default/private

drwxrwxr-- 2 www-data www-data  4096 Jul 31 12:35 files
drwxrwxr-- 3 www-data www-data  4096 Jul  5 15:08 private
1
Claudio Lente

エラーの別の原因は、ファイルフォルダーに書き込めないことです。私の場合、私はそれを使ってそれを解決しました:

$chmod 777 sites/default/files/pictures/
1
freeman

あるサーバーから別のサーバーに移動した後も、同じ問題が発生しました。

ここで提案されているすべてを試し、フォルダを755に設定しました。

私の一時フォルダは "" tmp7zXhVVCO "に設定され、実際にインストールファイルを適切にコピーしました。再試行するたびに一時ファイルがそこにコピーされるのを見ましたが、インストールは失敗し続けました。

ただし、問題は所有者の権利ではなく、777がこのエラーを削除する理由ですが、これは本番サイトにアクセスする方法ではないことは誰もが知っています。

あなたがしなければならないことは、一時フォルダを「temp」またはあなたに合ったものなど、他のものに変更することですまだ存在しない場合、drupal Apache権限でこの新しいフォルダを作成し、notser権限で問題が発生します解決しました。

1
Kevin G

Pantheonを使用してこの問題が発生し、(temp)ファイルのディレクトリパスを設定した後も引き続きエラーが発生する場合は、開発インスタンスダッシュボードの接続モードをGitからSFTPに切り替える必要がある場合もあります。

Drupalサイトは、Gitが管理するディレクトリにファイルを保存しようとしている可能性があります(たとえば、アダプティブテーマのテーマでレイアウト設定などを変更している場合)。これを行うには、 SFTP:ファイルが保存されたら、Gitに戻ると、ダッシュボードがサーバーに加えられた変更をコミットするように求めます。

1
Kay V

移行についても同じ問題がありました。 chmod 777ですべてのサイト/デフォルト/ファイルを使用していますが、エラーは引き続き発生します。私はsites/default/filesの許可775を変更し、メッセージが消えました。私はプライベートパスの問題ではありませんでした。私のものは/ var/tmpですが、775のアクセス許可です。

1
Wood

Configuration-> Media-> File Systemから/ temp-catalogueを削除しました。その後は何の問題もありませんでした。

1
Filip

私も同じ問題を抱えていました。

WindowsでIIS=を使用していました。最後に問題は、フォルダーsites/default/files内の、そして明らかに、sites/default/files/tmp内の権限に関するものでした。

最後に、私はフォルダに「完全なアクセス権」を再び与え、それはうまくいきました。

よろしく

1
jorge_vicente

一時フォルダの正しい権限は、Webサーバーの構成によって異なります。

Drupal with PHP with Apacheなど)を実行している場合、Userディレクティブを使用してメインWebサーバー構成ファイルで定義されているユーザーが書き込みを行う必要があります。それへのアクセス。

%grep -i "user" /etc/httpd/conf/httpd.conf

ユーザーApache

1
Taras