問題
shell_exec
PDFからテキストへのコンバーターを実行するために使用するPHPスクリプトがあります。問題を単純化するために、コマンドshell_exec
の出力をエコーするだけの短いスクリプトを作成しました。dir
<?php
$cmd = 'C:\\WINDOWS\\system32\\cmd.exe /c ';
echo shell_exec($cmd.' dir');
?>
これを Apache サーバーで実行すると、すべてが期待どおりに機能します。IIS に切り替えると、行が完全にスキップされたかのようです。エラーも出力もログも何もありません。
残念ながら、Active Directory に対してユーザーを認証するので、IIS を使用する必要があります。
これが私がこれまでに試したことです:
- コマンドを
cmd.exe /c
直接発行するのではなく、介して発行する - 「C:\WINDOWS\system32\cmd.exe」に
Read & Execute
権限を与えるSERVICE
- 「C:\WINDOWS\system32\cmd.exe」に
Read & Execute
権限を与えるNETWORK SERVICE
- 「C:\WINDOWS\system32\cmd.exe」に
Read & Execute
権限を与えるIUSR_MACHINENAME
Read & Execute
「C:\WINDOWS\system32\cmd.exe」に許可を与えEveryone
ます (心配しないでください。長い間そのままではありませんでした)。- PHP を ASAPI モジュールとして実行する
- これが私の標準構成です
- PHP を CGI 拡張として実行する
- これは機能しません。エラーが発生します。
CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers.
- これは機能しません。エラーが発生します。
- IIS マネージャーで、Web サイトで に設定
Execute Permissions
します。Scripts and Executables
- html マークアップとその他の php 関数をスクリプトに追加して、それが処理されるかどうかを確認しました。します。まるで
shell_exec
ビットがスキップされたかのようです。
この質問を見てくれてありがとう、私は今問題で髪を引っ張っています
乾杯、 イアン
更新 1
私は本当にこれをしたくありませんでしたが、適切な解決策を見つけるまでの一時的なギャップとして、web サーバー (shell_exec が正常に実行されます) で Apache を実行し、cURL 経由で apache スクリプトを呼び出します。それは醜いですが、うまくいきます:)。
更新 2
これは、IIS やアクセス許可自体の問題ではなく、おそらくネットワークに設定されているポリシーの結果であると考え始めていますが、何が原因かはわかりません。フィールドの左からのアイデアはありますか?