exec() zawieszenie aplikacji

0

Hej,

mam aplikację w PHP. Jedną z funkcjonalności jest uruchomienie małej apki w C#, która wrzuca coś do systemu ERP.
Uruchamiam tą apkę poprzez exec().
Wszystko jak do tej pory ładnie działało. PHP ładnie odpalał exe gdy konsola się zakończyła PHP kończył działanie.
Do aplikacji w c# dodałem funkcjonalność automatycznego wydruku - importuje dokument i rzucam go od razu na drukarkę.
Niestety aplikacja zawiesza się ( ta w c# ) i skrypt nigdy się nie kończy.
Dodam, że aplikacja odpalona z konsoli ( ta w c# ) działa poprawnie. Gdy odpalona z PHP najwyraźniej zostaje w miejscu gdzie uruchamiam serwis odpowiedzialny za wydruk.

exec("cmd /c C:\\sciezka\\do\\aplikacji\\konsolowej\\importErp.exe " . (int)$order_id . " " . $order_type, $output);

ERP - to ERP XL od Comarchu. Wydruki są robione w Crystal Reports. Przy odpaleniu apki konsolowej na ekran oprócz konsoli dostaję dosłownie na chwilkę okienko, że coś jest drukowane ( pewnie od Crystal Runtime ).
Dlaczego odpalenie przez PHP powoduje hang?

0

odpal apkę z php, podepnij się pod działającą z debuggera i zobacz na czym wisi

0

Nie jestem super na bieżąco z PHP, ale jak widzę to użycie exec(), w tym przykładzie, to mi to przypomina taniec na polu minowym...

1

Próbowałeś inne sposoby z działu "Program execution Functions"?

https://www.php.net/manual/en/ref.exec.php

0

Może kwestia uprawnień katalogów i plików? Masz ustawione zgody na uruchamianie?

0

@TomRZ: pokatuję wszystkie. Shell_exec jeszcze próbowałem

@karpov: w apce konsolowej dodalem log co sie dzieje. Apka sie odpala, loguje sie przez API do ERP i.... wisi.
Spróbuję się podpiąć debugerem pod nią i odpalić z php

0

Problem może być też z drugim argumentem, spróbuj tak:

exec("cmd /c C:\\sciezka\\do\\aplikacji\\konsolowej\\importErp.exe " . (int)$order_id . " \"" . $order_type."\"", $output);

1 użytkowników online, w tym zalogowanych: 0, gości: 1