2012-06-12 3 views
3

Я пытаюсь прочитать последний файл из папки. Найдя последний файл, я читаю его по очереди и печатаю его на принтере штрих-кода, используя программное обеспечение 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') нет. Почему нет?

+0

Он зависает или вызывает ошибку, которую вы не видите (поскольку отчет об ошибках не включен), и вы ожидаете выхода, который никогда не появится? – CodeCaster

+0

Он просто зависает до таймаута. ошибка не возникает. Отчет об ошибках включен. – Ank

+0

Вы пытаетесь посмотреть, есть ли у пользователя apache разрешение на выполнение? –

ответ

2

Поскольку вы не можете запускать исполняемые файлы, такие как Java, это определенно проблема с разрешениями. Решение, не рекомендуемое для производственного сервера из-за безопасности, заключается в том, чтобы запустить ваш WAMP-сервер в качестве администратора.

См. this link для получения более подробной информации о том, как это сделать.

+0

Будет ли это помогать, поскольку я отключил UAC! Я все равно попробую – Ank

+0

Я понимаю, почему вы сказали, что он не рекомендуется на производстве. Если его не рекомендуется, то что рекомендуется .. – Ank

+0

Это должно помочь. – davidethell

Смежные вопросы