[php] Wrapper voor CLI CGI-script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Urkie
  • Registratie: November 2004
  • Laatst online: 04-02 23:03
Ik heb een scriptje prenamescheck.cgi, dit is een CLI dus moet gedraaid worden d.m.v. een wrapper. Ik gebruik hiervoor de onderstaande code


PHP:
1
2
3
4
$output = system('./prenamescheck.cgi', $return);

echo "Return : ".$return."<br><br>";
echo "Output : ".$output;

Draai ik de php pagina dan krijg ik enkel '127' als output te zien.

Ik heb het toen geprobeerd met het volledige path opgeven waar de cgi file staat (zelfde resultaat); als ik een ander commando opgeef bijv. 'ls -l' voert hij dit wel uit...

wie kan mij hier verder mee helpen?

[ Voor 21% gewijzigd door Urkie op 24-11-2004 19:06 ]


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

Ik zou in dit geval niet voor system() gaan, maar voor passthru().

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • semicolon
  • Registratie: Mei 2004
  • Niet online
Moet het cgi bestand niet zo gechmod zijn dat hij de rechten om uitgevoerd te worden heeft? (Weet het niet meer zeker hoor)

:D/-<


Acties:
  • 0 Henk 'm!

  • Urkie
  • Registratie: November 2004
  • Laatst online: 04-02 23:03
@Tux: Het is uiteindelijk de bedoeling dat ik de output in een array zet, zodat ik er wat extensies kan uitfilteren (zijn er namelijk meer dan 100), zodat het ook een werkbare output is...

Vandaar de system() functie

@Max v W: Het scriptje is gechmod heeft status 777; dus moet goed wezen... Is helaa niet het probleem.

[ Voor 22% gewijzigd door Urkie op 24-11-2004 19:55 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
system() voert je progje gewoon uit, maar laat de stdout niet naar je php toe gaan. Die 127 is waarschijnlijk de return code van je programma.

of niet :/

[ Voor 10% gewijzigd door Grijze Vos op 24-11-2004 19:53 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Urkie
  • Registratie: November 2004
  • Laatst online: 04-02 23:03
@Grijze Vos: Nee de error 127 is de Exit status...

* If a command is not found, the child process created to
* execute it returns a status of 127.

Dit is dus de uitleg van de 127, maar is vreemd als ik via Putty inlog en het scriptje draai doet hij het wel.

Acties:
  • 0 Henk 'm!

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 19-09 16:45

Skinny

DIRECT!

^^^ Command not found...

Wellicht ten overvloede..

Zou dus even dubbelchecken of "./prenamescheck.cgi" vanuit de directory waaruit het php script gedraait wordt wel de juiste directory oplevert..

[ Voor 12% gewijzigd door Skinny op 24-11-2004 20:17 ]

SIZE does matter.
"You're go at throttle up!"


Acties:
  • 0 Henk 'm!

  • Urkie
  • Registratie: November 2004
  • Laatst online: 04-02 23:03
juiste directorie was gechecked.

Maar hij draait wel, had te maken met een server instelling, er bleek een module niet te zijn geinstalleerd op de server...

Domme fout, maar bedankt voor de tips en suggesties!

Acties:
  • 0 Henk 'm!

Verwijderd

sowieso zal je exec/shell_exec/popen/proc_open moeten gebruiken omdat je output ook nog wilt zien.
Voor het debuggen is het ook nog makkelijk als je ff stderr redirect naar stdout zodat je ook nog eens ziet wat er fout gaat. Had hier waarschijnlijk een hoop tijd gescheeld.

PHP:
1
2
3
4
5
vb1
$lines=explode("\n",shell_exec("./script.pl 2>&1")),

vb2
exec("./script.pl 2>&1",$lines);


zoiets
Pagina: 1