
Windows 2008 Server ボックスに Ghostscript、ImageMagick、IIS 5.0 がインストールされています。
また、ディレクトリにアップロードされた PDF のサムネイルを生成する変換スクリプトを実行する PHP スクリプトもあります。
<?php
$output = array();
$ret = 0;
echo exec('convert D:\content\myfile.pdf[0] D:\content\myfile_thumb_1.jpg', $output, $ret);
var_dump($ret);
?>
問題は、Web ブラウザーから呼び出されたスクリプトがユーザー IUSR_[COMPUTERNAME] として実行されることであると判明しました。
私の管理者アカウントでは、コマンドは CMD ラインから正常に実行されます (当然です)。
スクリプト/IUSR ユーザーによってサムネイルが生成されるようにするには、どのような権限を変更する必要がありますか?
以下の権限を変更してみました:
- GhostScript プログラム ファイル ディレクトリ (実行、書き込み、読み取りを許可)
- ImageMagick ディレクトリ (実行、書き込み、読み取りを許可)
- サムネイルが保存されるアップロードディレクトリ(読み取り、書き込み可能)
すべて Windows エクスプローラーで、ディレクトリを右クリックし、プロパティを選択して、セキュリティ タブをクリックします。IUSR_[COMPUTERNAME] は Guests グループの下にあるため、[COMPUTERNAME]/Guests にアクセス許可を追加します。
私はIISやWindowsに詳しくないのでわかりませんが、アクセス許可を更新するにはボックスを再起動する必要がありますか、それとも変更を適用した後で動作するのでしょうか?持っているIIS サービスを再起動しました。
注: 上記の投稿では、完全なコンピュータ名を削除し、[COMPUTERNAME] に置き換えました。