exec - uruchamia aplikację konsolową ale nie tworzy pliku txt - loga

0

Tworzę lokalną aplikację webową. Jedną z funkcjonalności jest dodanie poprzez .NETowe API dokumentu do systemu ERP.

Napisałem aplikację konsolową, która wykonuję wyżej wymienione. Aplikacja loguje pewne informacje do pliku.
Aplikacja na końcu zwraca pewne id ( return id )

I teraz problemy:

  1. Gdy uruchomię aplikację z konsoli -> tworzy się plik loga i wpisy w nim -> jednak po zapodaniu
exec("C:\\path\\to\\console\\aplication\\publi\\exec\\console.exe 21", $output);
print_r($output);

wszystko działa jak należy, dokument w ERP jest tworzony, jednak plik loga się nie tworzy. Gdy stworzyłem go ręcznie, nie ma w nim wpisów.

Środowisko aplikacji webowej to WAMP. Uprawnienia na katalog, w którym umieściłem aplikację konsolową zweryfikowałem.
Gdy zapuszczę aplikację z linii komend wszystko działa jak należy, z php plik log - kicha.

0

Upewnij się jakie jest <abbr title="current working directory">CWD</abbr> kiedy uruchamiasz aplikację z poziomu exec w PHP. Zapewne masz ścieżkę relatywną, zakładasz, że CWD to zawsze folder z aplikacją i log się tworzy (albo i nie) w innym folderze.

Jeżeli chodzi o return w aplikacji, to do tego masz trzeci parametr w exec. Drugi parametr to zwrotka na wyjście.

0

racja dzek69
cwd -> C:\wamp\www\moja_aplikacja

a plik exe mam w C:\wamp\www\moja_aplikacja\public\exec\console.exe

ja sprawić aby ten plik tworzył się w exec?
w c# zakodowałem to tak, że plik ma się tworzyć w tej samej lokalizacji to *.exe

0

Musisz zrobić w PHP cd na katalog z aplikacją. Program w C# najlepiej jakby tworzył plik pod ścieżką relatywną, czy nazwa_pliku.log bez żadnej ścieżki.

Możesz też zrobić, aby program w C# miał podaną ścieżkę bezwzględną (którą sam sobie odczyta odpowiednią funkcją). Wtedy nie musisz się martwić o zmianę katalogu w PHP.

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