フォルダーから最新のファイルを読み込もうとしています。最新のファイルを見つけたら、それを 1 行ずつ読み取り、バーコード オーバープリンター ソフトウェアを使用してバーコード プリンターで印刷しています。このバーコード プリンターは、サーバーの既定のプリンターです。
ここに私のPHPコードがあります:
<?php
$files = glob('C:\barcode\*.*');
$files = array_combine($files, array_map('filectime', $files));
arsort($files);
echo key($files); // for testing
$handle = @fopen(key($files), "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer; // for testing
$retval=passthru("BarcodeGenerator.exe ".$buffer.",,Code128,0");
// based on http://www.free-barcode.com/CommandLineBarcode.htm
echo $retval;
}
if (!feof($handle)) {
echo "Error:\n";
}
fclose($handle);
}
?>
上記のコマンド ラインは、私のコマンド ライン プロンプトでは問題なく動作しますが、php スクリプトでは動作しません。プログラムがハングします。何も起こりません。パススルー行にコメントすると、すべて問題ありません。プログラムが実行されます。
これが私がこれまでに試したことです:
- PHP がセーフ モードで実行されているかどうかを確認しました。そうではありません。
- Windows ファイアウォールをオフにしました。
- コマンドを実行しました
calcs /g BarcodeGenerator.exe everyone:F - 実行可能ファイルと関連ファイルを wamp\www フォルダーにコピーしました。上記のコード(悪い考えですが、それでもやりました)と計算をやり直しました。
- UAC 設定を最小に変更しました
- 現在、システムでウイルス対策が実行されていません。
- 私も試してみ
system()ましshell_exec()たexec() - セーフモードをオンにして、上記のディレクトリを下に置いてみました
safe_mode_include_dir "二重引用符 ( ) を単一引用符( )に置き換えてみまし'た。- フルパスを指定してみました (
C:\\wamp\\www\\)
コマンドはコマンド プロンプトで正常に実行されます。
shell_execでは、 PHP で管理者としてコマンドを実行する方法はありますか? 実行可能ファイルをまったく実行したくないようです(これだけではありません)。私は走っWAMPていWindows 7ます。
たとえば、shell_exec('dir')正常に動作しますが、shell_exec('java')動作しません。なぜだめですか?