Czy to mozliwe?

Ogólne pytania dotyczące systemu
voodoofreak
Posty: 16
Rejestracja: 09 lipca 2006, 17:16

Czy to mozliwe?

Post autor: voodoofreak »

Istnieje mozliwosc uruchomienia procesu na serwerze z poziomu przegladarki np poprzez skrypt php? Jezeli tak to: czy serwer www i aplikacja ktora chce uruchomic musza byc na jednym serwerze?
Witek Baryluk
Beginner
Posty: 207
Rejestracja: 26 czerwca 2006, 01:49
Lokalizacja: Kraków za firewallem

Re: Czy to mozliwe?

Post autor: Witek Baryluk »

voodoofreak pisze:Istnieje mozliwosc uruchomienia procesu na serwerze z poziomu przegladarki np poprzez skrypt php?
Tak.
Jezeli tak to: czy serwer www i aplikacja ktora chce uruchomic musza byc na jednym serwerze?
Raczej tak.

pozdro
alpin19
Posty: 8
Rejestracja: 13 września 2006, 01:37

Post autor: alpin19 »

Teoretycznie można to zrobić - ale po co skoro mamy do tego Perl'a i jego CGI ?
voodoofreak
Posty: 16
Rejestracja: 09 lipca 2006, 17:16

Post autor: voodoofreak »

hmm dobrze a gdzie moglbym przeczytac o tym jak to zrobic? albo jakies male wskazowki? Jakis maly przyklad?
Verdan
Posty: 80
Rejestracja: 06 czerwca 2006, 17:49

Post autor: Verdan »

http://pl.php.net/manual/pl/ref.exec.php

np. proc_open:

Kod: Zaznacz cały

<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);

$cwd = '/tmp';
$env = array('some_option' => 'aeiou');

$process = proc_open('php', $descriptorspec, $pipes, $cwd, $env);

if (is_resource($process)) {
   // $pipes now looks like this:
   // 0 => writeable handle connected to child stdin
   // 1 => readable handle connected to child stdout
   // Any error output will be appended to /tmp/error-output.txt

   fwrite($pipes[0], '<?php print_r($_ENV); ?>');
   fclose($pipes[0]);

   echo stream_get_contents($pipes[1]);
   fclose($pipes[1]);

   // It is important that you close any pipes before calling
   // proc_close in order to avoid a deadlock
   $return_value = proc_close($process);

   echo "command returned $return_value\n";
}
?> 
Zamiast proc_open możesz też użyć prostszych shell_exec() lub exec() bądź też system().

Zwróć uwagę czy na serwerze jest ustawione safe_mode, i poczytaj dokumentację do której dałem link.

Co do odpalenia jakiegoś programu na zdalnym serwerze polcam zerknąć tutaj:
http://pl.php.net/manual/pl/function.ssh2-exec.php
Czy tak -- jest to możliwe.

Czyli np.

Kod: Zaznacz cały

<?php
$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');

$stream = ssh2_exec($connection, '/usr/local/bin/php -i');
?> 
Przykłady z manuala php tak w razie gdyby ktoś nie przyuważył na stronach które podałem :P.

Pozdrawiam,
Verdan
voodoofreak
Posty: 16
Rejestracja: 09 lipca 2006, 17:16

Post autor: voodoofreak »

dziekuje slicznie za odpowiedz :D napisales w sumie wszystko czego oczekiwalem :D

[ Dodano: 2006-09-20, 14:29 ]
a jednak nie do konca jest wszystko pieknie.. moze mniej z tematem zwiazane jednak moze ktos mi odpowie (tylko tak zebym jako newbe zrozumial). Otoz przy probie uruchomienia

Kod: Zaznacz cały

./phpize && ./configure --with-ssh2 && make
wyskakuje mi taki oto blad:

Kod: Zaznacz cały

Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF
environment variable is set correctly and then rerun this script.
Szukalem odpowiedzi w sieci ale raczej nic z tego nie wyniklo. gdzies tam ktos napisal " trzeba było ustawić w PATH ścieżkę do własnych
binarek z php" ale nie wiem co z tym zrobic :/

[ Dodano: 2006-09-20, 20:40 ]
juz dziala... musialem zainstalowac pakiet autoconf.
ODPOWIEDZ