Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Komendy dzialajace jak cmd
Forum PHP.pl > Forum > PHP
poh
Witam, pisze maly serwis, ktory ma za zadanie wykonanie programu napisanego w cpp z obsluga wejsc i wyjsc (stdin stdout).

Pod windowsem, w cmd, odbywa sie to za pomoca

Kod
C:\sciezka\program.exe <in.txt >out.txt


Na localhoscie (xampp, apache z php 5.3) dzialaja wszystkie funkcje, ktore "imituja" cmd np: exec, system, proc_open.

Natomiast, jesli chce to umiescic na serwerze w szkole (w64, IIS, php 5.2, safe_mode off, w/w funkcje dzialaja), php tak jakby nie widzi, ze wejscia z stdin np:

Kod
2 4
1 3
4 5
6 3
...

"naleza" do programu i wyswiela bledy wiersza polecen, ze "2 4 jest nieprawidlowa komenda blabla..".

przykladowe uzycie exec() w tym przypadku wyswietla bledy w $output

  1. <?php
  2. exec("%windir%\\SysWoW64\\cmd.exe \k C:\\sciezka\\app.exe <in.txt 2>&1", $output);
  3. ?>


lub tez proc_open()

  1. <?php
  2. $descriptorspec = array(
  3. 0 => array("file", "in.txt", "r"), // stdin is a pipe that the child will read from
  4. 1 => array("file", "out.txt", "w"), // stdout is a pipe that the child will write to
  5. 2 => array("file", "error-output.txt", "a") // stderr is a file to write to
  6. );
  7.  
  8. $process = proc_open('%windir%\\SysWoW64\\cmd.exe \k C:\\sciezka\\app.exe', $descriptorspec, $pipes);?>


Jak rozwiazac problem? na localhoscie dziala wiekszosc (jak nie wszystkie) rozwiazan, na serwerze zadne..
jackussa
Myślę że problemem tutaj jest to iz używasz Xampp, czyli Apacha, który oparty jest na Unixie, a więc wszystkie komendy exec które wpisujesz powinny być komendami unixowymi. Sróbuj przerobić zapytanie kompilacyjne pod unixa, albo zainteresuje się serwerem microsoftowym np IIS
h3xed
Cytat
Natomiast, jesli chce to umiescic na serwerze w szkole (w64, IIS, php 5.2, safe_mode off, w/w funkcje dzialaja)


Czytać nie umiesz ? Napisał, że na IIS działa... xampp jest na windzie to co mają do tego komendy unixowe ?

Jak dla mnie poszukaj w zabezpieczeniach, to jest windows server ?

Problem leży w zabezpieczeniach, IIS w przeciwieństwie do apache nie ma standardowo dostępu do exca. Jednak nie znam za dobrze IIS więc nie pomogę, poszukaj w manualu od IIS.

edit:

Look it: http://www.somacon.com/p255.php
erix
Cytat
Myślę że problemem tutaj jest to iz używasz Xampp, czyli Apacha, który oparty jest na Unixie, a więc wszystkie komendy exec które wpisujesz powinny być komendami unixowymi.

Że co? O.o'
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.