3

2 つのimagefield / filefieldフィールドを持つコンテンツ タイプがあり、サイトを新しいサーバーに移行した後、次の問題が発生しました。

これらのフィールドに 2 つの画像を使用して、このコンテンツ タイプの新しいアイテムを送信すると、drupal は次のエラーを表示し、画像をアップロードしません。

警告: fopen(sites/default/files/.htaccess) [function.fopen]: ストリームを開くことができませんでした: 行 349 の /websites/sitename/data/sites/all/modules/filefield/field_file.inc で権限が拒否されました。警告: fopen(sites/default/files/.htaccess) [function.fopen]: ストリームを開くことができませんでした: 行 349 の /websites/sitename/data/sites/all/modules/filefield/field_file.inc で許可が拒否されました。画像サムネイルを作成できませんでした。警告: fopen(sites/default/files/.htaccess) [function.fopen]: ストリームを開くことができませんでした: 行 349 の /websites/sitename/data/sites/all/modules/filefield/field_file.inc で権限が拒否されました。警告: fopen(sites/default/files/.htaccess) [function.fopen]: ストリームを開くことができませんでした: 行 349 の /websites/sitename/data/sites/all/modules/filefield/field_file.inc で許可が拒否されました。

これがパーミッション エラーであることは理解していますが、どこでパーミッションを変更する必要があるかが明確ではありません。file.inc の 349 行目に次のコードがあります。

  if (($fp = fopen("$directory/.htaccess", 'w')) && fputs($fp, $htaccess_lines)) {
      fclose($fp);
      chmod($directory .'/.htaccess', 0664);
    }
    else {
      $repl = array('%directory' => $directory, '!htaccess' => nl2br(check_plain($htaccess_lines)));
      form_set_error($form_item, t("Security warning: Couldn't write .htaccess file. Please create a .htaccess file in your %directory directory which contains the following lines:<br /><code>!htaccess</code>", $repl));

*編集: 解決しました。問題は、.htaccess ファイルを作成するために、何らかの理由で drupal が sites/default/files フォルダーに書き込み権限を必要とすることでした。

4

1 に答える 1

6

file.inc のコードは.htaccess、files ディレクトリ (この場合は「sites/default/files」) 内のファイルを更新/作成します。失敗するということは、Web サーバー プロセスにファイル ディレクトリへの書き込み権限がまったくないことを意味する可能性があります (バックエンドでより顕著なエラーが発生するため、可能性は低いです)。または、.htaccess設定されたディレクトリに既にファイルが存在する可能性があります。読み取り専用にします (ファイルがデフォルトで非表示になっているため、移行時に発生した可能性が高く、簡単に見落とされる可能性があります)。

于 2010-05-10T17:53:07.527 に答える