【IISでDrupal】画像をアップロードで「未知のエラーが発生したため~保存できませんでした。」

WindowsServerのIISでDrupalを
なんとかインストールしました。

が肝心の記事投稿で画像をアップロードすると
未知のエラーが発生したため、ファイル %file を保存できませんでした。
(英語の場合:The file %file could not be saved. An unknown error has occurred.)

IISでDrupalは本当に情報がなくて、ぐぐっても情報がでず先に進めない…
IIS_IUSRSやIUSRS権限を追加してもだめ…。
今回はなかなか苦戦しましたが、対処方法がわかりましたので紹介します。

IIS+Drupal環境で画像をアップロードすると「未知のエラーが発生したため~」の対処

先に結論をかきます。php.ini に1行書き込めば解決します。

upload_tmp_dir = C:\inetpub\wwwroot\drupal\sites\default\files
ピンクの部分はご自身のdrupalをインストールしているフォルダパスを指定します。
修正後、IISを再起動します、設定は以上。
これで画像がアップロードされるようになりました。
あとは覚え書きですが
基本的に記事の投稿は sites\default\files\inline-images
プロフィール画像などは sites\default\files\pictures\2021-08

情報元(英語)

Access to this page has been denied.

以下Chromeで翻訳を引用させていただきます。

私は同じ問題を数回経験しました。解決策は、ホスティング環境によって異なる場合があります。DrupalサイトをWindows2008サーバー+ IISスタックでホストしています。しかし、許可の問題によって通常発生するものがログに記録されなかった場合は特に、「保存できませんでした。不明なエラーが発生しました」というエラーが最終的にわかりました。

この問題を修正する秘訣は、対応するディレクトリに正しいユーザーを設定することです。

まず、パブリックファイルシステムのパスと一時ディレクトリについては、[サイト] >>管理者>>構成>>メディア>>ファイルシステムを参照してください。
サーバーへの書き込みアクセス許可をWebサーバーユーザー(IISの場合はIUSR)に付与してください。
もう1つの非常に注意が必要な部分は、Windowsサーバーでのみ発生したように見えるPHP.ini構成です。一時フォルダのアップロードには次の設定があります。
; HTTPアップロードファイルの一時ディレクトリ(
指定されていない場合はシステムのデフォルトを使用します)。
; http://php.net/upload-tmp-dir
; upload_tmp_dir =
すでにすべてを試しても何も機能しない場合は、この行を一般的ではなく、一時フォルダーのパス(c:\ files \ tempなど)とグランドIISユーザーの書き込み権限を指定してください。これにより、Drupalサイトの一時ファイルフォルダーがこの場所に自動的に書き換えられます。それは問題を修正します

今回は以上です。

コメント