Ik heb een class gemaakt waarmee ik via php interactieve unix commando's kan aansturen. Met deze class heb ik al succesvol een telnet sessie aan kunnen sturen.
Hier is de code die gebruikt wordt om het proces te starten:
Het probleem is nu dat als ik de class op de productie server neer zet en ik probeer een telnet sessie aan te sturen, dan krijg ik geen login meer. Het enige wat ik nog krijg is:
Het proces draait nog wel. Als ik de login gegevens verstuur naar het proces en dan de opdracht geef om een directory aan te maken, dan zie ik die directory ook verschijnen. Maar ik krijg geen output meer van het proces.
Door wat te proberen met een apparte apache instantie, heb ik ontdekt dat het te maken heeft met het aantal apache logfiles dat geconfigureerd is. Als er meer dan 4 logfiles gebruikt worden, dan gaat het fout. En aangezien er 3 virtual hosts geconfigureerd zijn voor de betreffende apache configuratie, is dat net te weinig.
Nog wat overige informatie:
- Het gaat hier over php versie 4.3.4 en apache versie 2.0.48 draaiende op SunOS Solatis 5.9.
- Het aanmaken van een directory is gewoon een test case, niet het uiteindelijke doel.
Hier is de code die gebruikt wordt om het proces te starten:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function start() { $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("pipe", "r")); // stderr is a file to write to $this->mProcess = proc_open($this->mCommand, $descriptorspec, $this->mPipes); if (is_resource($this->mProcess)) { // don't block php-script while reading when there is nothing to read stream_set_blocking($this->mPipes[0], false); stream_set_blocking($this->mPipes[1], false); stream_set_blocking($this->mPipes[2], false); } return is_resource($this->mProcess); } |
Het probleem is nu dat als ik de class op de productie server neer zet en ik probeer een telnet sessie aan te sturen, dan krijg ik geen login meer. Het enige wat ik nog krijg is:
code:
1
2
3
| Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. |
Het proces draait nog wel. Als ik de login gegevens verstuur naar het proces en dan de opdracht geef om een directory aan te maken, dan zie ik die directory ook verschijnen. Maar ik krijg geen output meer van het proces.
Door wat te proberen met een apparte apache instantie, heb ik ontdekt dat het te maken heeft met het aantal apache logfiles dat geconfigureerd is. Als er meer dan 4 logfiles gebruikt worden, dan gaat het fout. En aangezien er 3 virtual hosts geconfigureerd zijn voor de betreffende apache configuratie, is dat net te weinig.
Nog wat overige informatie:
- Het gaat hier over php versie 4.3.4 en apache versie 2.0.48 draaiende op SunOS Solatis 5.9.
- Het aanmaken van een directory is gewoon een test case, niet het uiteindelijke doel.