Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: exec
Forum PHP.pl > Forum > PHP
john_doe
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 sad.gif
1. Gdy uruchomię aplikację z konsoli -> tworzy się plik loga i wpisy w nim -> jednak po zapodaniu

  1. exec("C:\\path\\to\\console\\aplication\\publi\\exec\\console.exe 21", $output);
  2. print_r($output);


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

2. mimo, że aplikacja konsolowa zwraca jakiś int $output jest pusty Array ( )



busterek
Ponieważ to jest Windows, to sprawdź, czy serwer WWW ma odpowiednie prawa dostępu do aplikacji conosole.exe. I oczywiście do całej ścieżki. Jeślu uprawnienia są złe, to exec się nie wykona.
john_doe
no tak ale php uruchamia aplikację, aplikacja robi swoje prawie wyśmienicie smile.gif
prawie tzn. nie loguje zdarzeń do pliku TYLKO/AŻ tyle
busterek
Bo PHP (webserver) może nie mieć praw zapisu. Napisałeś, że Twoja aplikacja tworzy plik z logiem. Czyli serwer WWW musi mieć prawa do tworzenia pliku w tym katalogu. Z resztą zarówno pod Windą, jak i Linuksem. Domyślne prawa są do odczytu. Czyli aplikacja wykonuje się, robi to co do niej należy z wyjątkiem założenia pliku logu, bo może nie mieć praw.
john_doe
no ok, jak to ustawić?

dodam, że aplikację konsolową napisałem tak, że ma tworzyć plik w katalogu w którym się znajduje. A znajduję w katalogu z projektem na serwerze www.

busterek
A jakiego webserwera używasz? IIS? Czy apache?
john_doe
apache
busterek
Uprawnienia dla konta SYSTEM. Prawym przyciskiem myszy na katalog, gdzie plik ma sie tworzyć. Następnie zakładka zabezpieczenia. Edytuj. I dodajesz na listę nowego użytkownika SYSTEM. I nadajesz mu odpowiednie uprawnienia.

Ewentualnie spróbuj takiej konstrukcji:

  1. exec("cmd /c C:\\path\\to\\console\\aplication\\publi\\exec\\console.exe 21", $output);
john_doe
cmd /c nie dało rezultatu

user system na tym katalogu ma pełne uprawnienia
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.