2013-07-29 10 views
26

Próbowałem użyć exec() z 'whoami', by sprawdzić, czy to działa i mam wynikphp exec() nie wykonuje polecenia

nt authority\system 

Teraz trzeba uruchomić plik .exe z parametrami od php przez funkcję exec().

Próbowałem tego w wierszu poleceń i faktycznie uruchamia program z podanymi parametrami. To jest przykładowe polecenie.


UWAGA plik exe dostaje 3 wejścia (folder, nazwa_pliku, report_file_nmae)

> ..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml 

Ale kiedy uruchomić tę komendę z php pliku:

exec('..\..\some_file.exe folder="C:\path_to_folder" param=1.xml report=2.xml'); 

nic się nie dzieje. Po raz pierwszy używam funkcji exec(), więc nie znam jej szczegółów. Co jest nie tak?

Próbowałem za pomocą:

  • \\ zamiast \
  • escapeshellarg() w katalogu
  • dodanej "" całego katalogu nazw folderów

Nie traf

Uzupełnienie:

echo exec($command) // echos < .... why? 

lub

exec($command, $output); 
print_r($output);  // Array() 

nawet zmienił zgodę na plik do pełnej kontroli dla wszystkich użytkowników. Jeśli zadzwonię do programu z command prompt, widzę ikonę pojawiającą się obok zegara przez sekundę.

Jednak to samo połączenie z php nie wywoła nawet programu.

Edit

Nawet exec('notepad.exe'); nie działa. Coś musi być zrobione z konfiguracjami php?

+1

Upewnij się, że PHP ma uprawnienia do wywoływania tego pliku. – Joren

+0

jak mogę się upewnić ... – Brian

+0

Szczerze mówiąc nie wiem, jak to zrobić w systemie Windows, ponieważ jego system uprawnień jest niespójny. – Joren

Odpowiedz

65

Powiedziałem już, że jestem nowy w funkcji exec(). Po wykonaniu kilku dalszych prac, natknąłem się na 2>&1, który należy dodać na końcu polecenia w exec().

Dziękuję @mattosmat za wskazanie go również w komentarzach. Nie próbowałem tego od razu, ponieważ powiedziałeś, że jest to polecenie systemu Linux, jestem w systemie Windows.

Więc, co odkryłem, polecenie wykonuje się w back-end. Dlatego nie mogłem zobaczyć, że to działa, co się spodziewałem.

Dla wszystkich, którzy mieli podobny problem, radzę użyć tego polecenia. Pokaże wszystkie błędy, a także przekaże informacje/szczegóły dotyczące wykonania.

exec('some_command 2>&1', $output); 
print_r($output); // to see the response to your command 

Dzięki za wszelką pomoc chłopaki, ja to doceniam;)

+3

Wiedza ta bardzo pomogła. Nie mogłem się domyślić, dlaczego nie otrzymałem odpowiedzi. Dzięki. – earl3s

+1

Tak, to bardzo pomogło. i uzyskałem wynik jako "Access is Denied" w PHP na IIS. Tak więc dodałem uprawnienia dla użytkownika NEWTWORK do pliku, który wykonywałem. –

+0

Jeśli używasz XAMPP checkout to: http://stackoverflow.com/questions/24941078/ffmpeg-and-php-on-mac-doest-work –

0

Można także spróbować podając pełną ścieżkę do pliku binarnego, który próbujesz uruchomić. To rozwiązało mój problem przy próbie użycia ImageMagick.

Powiązane problemy