一時ディレクトリの構成


48

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

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

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

回答:


46

[管理者]-> [構成]-> [メディア]-> [ファイルシステム]を確認して、tmpパスをカスタマイズします。相対パスを使用し、Apacheユーザーに対して適切な権限を持っていることを確認してください。

私は個人的にこの記事の修正ファイルのアップロードが好きです。彼は良い観察をしています。それは私のために働いた。

最近、サイトをMacコンピューターにダウンロードしました。Mac mod_userdirでApacheを使用していた/etc/apache2/users/nameofuser.confので、を設定する必要があることを忘れていましたAllowOverride All。そうしないと、次のメッセージが表示されます。

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


含まれるリンクがダウンしている
pal4life

リンクが帰ってきた!! 著者は親切にサイトを元に戻しました!
cayerdis 14

2
答えにこれらの「観測」の統合を追加するとよいでしょう。
fifiファイナンス

4
リンクが再びダウンしました。
カリカリエンネン


17

settings.phpで

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

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

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

ls -al /tmpコマンドラインで実行することにより、アクセス許可を確認できます。

これについてさらに読みたい場合は、https://en.wikipedia.org/wiki/Temporary_folderを参照してください。


1
私の意見ではこれは本当に良い答えではありません。説明/tmpはなく、適切な権限がない場合は機能しない可能性があります。それは受け入れられた答えとも矛盾します(それ自体は素晴らしいことでもありません)。
fifiファイナンス

答えにはあまり説明が必要だとは思わない。$ conf変数がsettings.phpでどのように機能するかは、Drupal開発者にとって一般的な知識だと思う。この答えの良いところの1つは、簡潔であることです。受け入れられた答えと矛盾するかどうかはわかりません。受け入れられた答えが機能するので、これは代替案です。この方法とUIを使用して行う方法の違いは、これが複数の環境で機能することですが、各環境のUIで個別に設定する必要があります。
チム14年

16

指定された一時ディレクトリ(admin / config / media / file-systemで定義)とその一時ファイルがコピーされるフォルダーの両方に、アクセス許可の問題が存在する可能性があることを理解することが重要です。私はこのエラーを何度か見ましたが、通常は一時フォルダーの問題ではなく、一時フォルダーに保存された後にそのファイルがコピーされる最終フォルダーです。

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


1
これは私の場合でした。私の場合、新しく作成した/ sites / default / filesディレクトリの所有権をUSERNAME:apacheに設定する必要がありました(一部のシステムでは、グループはnobodyと呼ばれます)。
エヴァンドノヴァン

8

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

ファイルのアクセス許可をpublic:// jsに設定できませんでした。

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


私の問題はこれと同じでしたが、次を使用して修正します。sudo chgrp -R www-data / var / www / mysite
Wavesailor

「パーミッションを775に変更する」と組み合わせるsudo chgrp -R www-data /var/www/mysiteと仮定します。これは必要ありません。Drupalはすべてのフォルダーに書き込む必要はありません。パブリック、プライベート、およびtmpファイルのフォルダーのみ。
rovr138 16

はい-ここで重要なことは、他の答えが言及されていないことで、宛先ディレクトリを見つけることです(通常、sites / default / filesのどこかにあります-JS / CSS連結がオンになっている場合、/ cssおよび/ jsが主要な候補です)ログを表示することによってのみ取得できます。
ウィリアムタレル

…*ただし*-管理フォームのラベルには「このディレクトリはWeb経由でアクセスできない」と記載されているため、ApacheまたはNginxで/ sites / default / files / tmpを保護する手順を実行していない限り、悪い考えがあります。
ウィリアムタレル

5

admin/config/media/file-system / tmp に変更して、ファイルシステム設定を見つけることができます。

また、設定の問題についてadmin / reports / statusを確認できます

/ tmpパーミッションについては、755に与えることができ、/ public_htmlにあります。


2

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

問題が宛先ディレクトリに関係していると言っている場合、ApacheにはDrupalがファイルを入れたいと思っているsites / default / filesサブフォルダーへの書き込み権限がない可能性があります。

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

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

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


1
このソリューションは、私は、このUbuntuの14.014に取り組んで終わりだ、私の一日を救ったchown -R www-data:www-data /var/www/html/sites/default/files/
リシKulshreshtha

2

ファイルディレクトリ: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サーバーに応じて、これらのコマンドのいずれかが次のような一連の行を返します。

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プログラムを使用して、ディレクトリのアクセス許可を調整することもできます。

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

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


1

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

$chmod 777 sites/default/files/pictures/

15
うん、本当に?明らかに本番サイトとは何ですか?それは無責任なアドバイスです。
デビッドマイスター

ええ、少なくとも755を与えてください。
user1359

@DavidMeister私はあなたを支持しましたが、残念ながら共有ホスティング(嘔吐)で時々777がApacheがフォルダに書き込むことができる唯一の方法です

@andrewtweber 、これについて確かですか?共有ホスティング環境であっても、775は必要な程度にゆるいはずです。777を必要とする共有ホスティングプロバイダーの例を教えてください。共有サーバーで777を使用し、VPSがない場合、サーバー上の他のすべてのユーザーがファイルにアクセスできます。
デビッドマイスター

3
@andrewtweberもそう、レッスンは、「共有ホスティングは」777が必要であることが、「ホスティングぞっとする」777が必要なことではありません
デビッド・マイスター

1

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


0

私の古い問題のある構成

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

はい、フォルダを使用するには実行する必要があります。775は774よりも適切であると思われます。所有権の設定方法に関しては、755も適切なオプションです。
ルービー

0

一時フォルダーの正しいアクセス許可は、Webサーバーの構成によって異なります。

ApacheなどのWebサーバーのモジュールとしてPHPを使用してDrupalを実行している場合、Userディレクティブを使用してメインWebサーバー設定ファイルで定義されているユーザーは書き込みアクセス権を持っている必要があります。

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

ユーザーApache


0

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

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

私の一時フォルダは「 "tmp7zXhVVCO"」に設定されており、実際にインストールファイルがコピーされました。

しかし、問題は所有者であり、権利ではなく、777がこのエラーを削除する理由です。

あなたがすべきことは、一時フォルダを「temp」またはあなたに合ったものに変更することです。まだ存在しない限り、drupalはこの新しいフォルダをユーザー権限ではなくApache権限で作成します。解決されます。


これを行うと、エラーが発生しますThe directory ../temp2 does not exist and could not be created.
ポールトロッター

0

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

今のところ、これを次から実行し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

0

設定->メディア->ファイルシステムから/ temp-catalogueを削除しました。その後、問題はありませんでした。


0

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


0

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

Drupalサイトは、Gitが管理するディレクトリにファイルを保存しようとしている場合があります(たとえば、Adaptive Themesテーマでレイアウト設定などを変更している場合)。これを行うには、SFTPに切り替えます。ファイルが保存されると、Gitに切り替えることができ、サーバーで行われた変更をコミットするようにダッシュボードがプロンプトします。


0

同じ問題がありました。

WindowsでIISを使用していました。最後に、問題は、sites / default / filesフォルダー、および明らかに、sites / default / files / tmpのアクセス許可にありました。

最後に、フォルダに「完全なアクセス許可」を再度付与しましたが、うまくいきました。

よろしく

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.