GUIで「アップデートマネージャ」を使用するときに問題が発生します。一部のディレクトリはphp-cgi.exe
によってロックされるため、元のディレクトリを新しくダウンロードしたディレクトリ(新しい)で置き換えることはできません。
しかし、モジュールは「/admin/modules/install
」の(= /// =)「Install from a URL」を介してインストールできるため、権限の問題ではないことを述べておかなければなりません。問題なく動作します。
例を見てみましょう:
利用可能な更新ページ(/admin/reports/updates/update
):
ここで、選択(またはその他)更新するモジュール(をチェックします。どのモジュールを選択してもかまいません、結果は同じです!!したがって、単なる例です)。
「これらのアップデートをダウンロード」ボタンを押します。
D:/Projects/web/drupal-7/tmp/update-extraction-6d8993ac/select_or_other/LICENSE.txt
を/Projects/web/drupal-7/htdocs/sites/all/modules/select_or_other/LICENSE.txt
にコピーできません。 " ../tmp
を一時ディレクトリ(/admin/config/media/file-system
内)に設定し、Drupalファイルはhtdocs
にあります。これは正しいので、インストールできます。上記で述べたように、GUI経由のモジュール。htdocs/sites/all/modules/select_or_other
!へのアクセスが拒否されました」が表示されるため、......sites/all/modules/select_or_other
ディレクトリにアクセスしようとしてもできません。司令官、および "...sites/all/modules/select_or_other
にアクセスできません。Windowsエクスプローラーで開くと、アクセスが拒否されました": 、 php-cgi.exe
によってロックされています: [Unlock All]をクリックすると、フォルダーが削除されます(php-cgi.exe
でロックされなくなったため)。tmp
にあります: sites/all/modules
ディレクトリに移動する必要があります。php-cgi.exe
によるディレクトリのロックアップの考えられる理由は何ですか?(おそらくWindows Cache Extension 1.1 for PHP 5.3はWebプラットフォームインストーラーを介してインストールされますか?しかし、インストールされている場合、たとえば、GUIを介した画像の削除などが正しく機能しているのはなぜですか?)
この問題を回避し、「アップデートマネージャ」を機能させるにはどうすればよいですか?
これは安全ではなく、Drupalモジュールを更新するためのユーザーインターフェイスからファイルを書き込むことができます。代わりに、ftpを使用してください。
しかし、必要に応じて、ホスティングのpleskパネルに移動し、httpdocsディレクトリを右クリックして、権限をクリックします。次に、権限で、アプリケーションプールユーザーに書き込み権限を与えます。
ありがとう
Php-cgiがロックを保持する理由は、ウィンドウがファイルアクセスを処理する「特定の」方法と、php/iisが「キャッシュ」を処理するためです。基本的には、ディレクトリを作成してアクセスしようとしたが、それを作成したハンドルが解放されなかった(そのため、まだロックされていた)。これはdrupalの問題ではありません。IIS/ PHPの問題です。また、私が見つけることができる既知の回避策はありません。
基本的には、IISが最適ではないという基本的なアドバイスを行います。この問題は、drupal with IIS(win32の)Apache HTTPDに移動することで解決しました。Windows2000を使用する必要があったプロジェクトで、学校に戻ったことを覚えておいてください。
windowsでdrupalを実行することについて知っている最善の方法は、Apacheを使用することです(phpの内部処理のため)。
正しい方向に掘るためのいくつかのアイデア:
Drushで同じ問題が発生した場合、これがIIS問題であるかどうかはわかりません。Drushは、PHP IIS?IIS(iisreset/stop)を停止してからDrush updateコマンドを実行すると、同じ結果が得られると思います。
その他(申し訳ありませんが、ローリーの答えに直接コメントするのに十分な評判がありません):
「基本的にディレクトリを作成してアクセスしようとしたが、それを作成したハンドルが解放されなかった」
これは本当ですか?元の投稿から、彼は「tmp」にフォルダを作成したように見えますが、ロックは「httpdocs」の既存のフォルダにあります。
私の推測では、php-cgiはtmpからhttpdocsへのコピーを試み、何らかの理由で失敗し、ロックを解除しません。したがって、失敗後に調査すると、httpdocsがロックされているのがわかりますが、失敗の最初の理由はロックではないと思います。結局のところ、tmpフォルダーのアクセス権の問題かもしれません。