Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> exec
john_doe
post
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (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 (IMG:style_emoticons/default/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 ( )



Go to the top of the page
+Quote Post
busterek
post
Post #2





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.

Ten post edytował busterek 8.11.2013, 14:03:00
Go to the top of the page
+Quote Post
john_doe
post
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


no tak ale php uruchamia aplikację, aplikacja robi swoje prawie wyśmienicie (IMG:style_emoticons/default/smile.gif)
prawie tzn. nie loguje zdarzeń do pliku TYLKO/AŻ tyle
Go to the top of the page
+Quote Post
busterek
post
Post #4





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
john_doe
post
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


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.



Ten post edytował john_doe 8.11.2013, 14:34:30
Go to the top of the page
+Quote Post
busterek
post
Post #6





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


A jakiego webserwera używasz? IIS? Czy apache?
Go to the top of the page
+Quote Post
john_doe
post
Post #7





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


apache
Go to the top of the page
+Quote Post
busterek
post
Post #8





Grupa: Zarejestrowani
Postów: 109
Pomógł: 0
Dołączył: 30.07.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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);
Go to the top of the page
+Quote Post
john_doe
post
Post #9





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


cmd /c nie dało rezultatu

user system na tym katalogu ma pełne uprawnienia
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 04:40