1

Мои настройки следующие: Windows 7, XAMPP с включенными Apache и PHP У меня есть PHP-скрипт, в котором я вызываю внешнюю программу для запуска конвертации. Эта внешняя программа представляет собой EXE-файл, который требует 3 атрибута:

  • Исходный файл
  • Файл назначения
  • Дополнительные флаги (тип конверсии и т.д.)

Когда я использую инструмент командной строки, встроенный в XAMPP, для выполнения моего скрипта, все работает отлично. Но когда я использую функцию exec() в своем скрипте PHP, выходной файл не создается. Я уверен, что преобразование действительно происходит (это занимает около 5 секунд, примерно столько же, сколько требуется для запуска сценария PHP).

Я думаю, что это проблема с разрешениями, поэтому я уже переместил EXE-файл в ту же папку, что и мой PHP-файл, и настроил разрешения для всей папки (я предоставил все разрешения всем пользователям). Я также отключил Windows UAC и попытался поместить команду в BAT-файл. Файл просто не создан.

Любая помощь или советы будут с благодарностью!

РЕДАКТИРОВАТЬ: мой код PHP выглядит следующим образом:

exec('c:\converter.exe c:\src.txt c:\dst.txt -f', $output);
print_r($output);

Когда я печатаю $ output, массив оказывается пустым. Когда я помещаю точно такую же команду в командную строку, код работает как шарм (без синтаксических ошибок). Я также использую абсолютные пути.

1 ответ1

1

Большое спасибо за ваш вклад! Как оказалось, это была проблема с Windows, вызванная функцией «Обнаружение интерактивных сервисов». Apache работал как системная служба, которая предотвращала вызовы внешних программ (с графическим интерфейсом). Я отключил функцию запуска как сервис в XAMPP, что решило проблему. Более подробное объяснение можно найти здесь: http://php.net/manual/en/book.exec.php

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .