Я пытаюсь прочитать последний файл из папки. Найдя последний файл, я читаю его по очереди и печатаю его на принтере штрих-кода, используя программное обеспечение Overprinter штрих-кода. Этот принтер штрих-кода является принтером по умолчанию на моем сервере.PHP не работает с shell_exec(), system() или passthru()
Вот мой 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 скрипт. Программа зависает. Ничего не произошло. Если я прокомментирую строку passthru, все в порядке. Выполняется программа.
Вот что я пытался до сих пор:
- Проверено ли PHP работает в безопасном режиме. Это не.
- Отключен брандмауэр Windows.
- Я запустил команду
calcs /g BarcodeGenerator.exe everyone:F
- Я скопировал исполняемый файл и связанные файлы в папку wamp \ www. приведенный выше код (плохая идея, но я все еще это сделал) и redid calcs.
- Я изменил настройки UAC на минимум
- В моей системе не работает антивирус.
- Я попытался
system()
,shell_exec()
иexec()
слишком - Я попытался поворотом в безопасном режиме, и поставив выше каталог под
safe_mode_include_dir
- Я попытался заменить двойные кавычки (
"
) с одинарными кавычками ('
) , - Я попытался дать полный путь (
C:\\wamp\\www\\
)
Команды запуска штраф в командной строке.
Итак, есть ли способ запустить команду shell_exec
под управлением PHP? Кажется, он вообще не хочет запускать исполняемый файл (не только этот). Я бегу WAMP
на Windows 7
.
Например, shell_exec('dir')
работает нормально, но shell_exec('java')
нет. Почему нет?
Он зависает или вызывает ошибку, которую вы не видите (поскольку отчет об ошибках не включен), и вы ожидаете выхода, который никогда не появится? – CodeCaster
Он просто зависает до таймаута. ошибка не возникает. Отчет об ошибках включен. – Ank
Вы пытаетесь посмотреть, есть ли у пользователя apache разрешение на выполнение? –