[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Script php pour lancer un autre script en n'importe quel language



Salut liste,

En faisant du ménage, j'ai retrouvé un script php qui permet de
lancer un autre script en n'importe quel language, et évite un 
setup tortueux quand on a déjà d'autres services sous php (utilisé
chez moi avec awstats); il est plutôt dédicacé à nginx.

Ca peut ptêt intéresser du monde ici...

/usr/lib/cgi-bin/cgi-bin.php

<?php
// Stolen from: http://forum.slicehost.com/index.php?p=/discussion/2561/setup-awstats-on-my-nginx-server/p1

$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", "w")   // stderr is a file to write to
);

$newenv = $_ENV;
$newenv["SCRIPT_FILENAME"] = $_ENV["X_SCRIPT_FILENAME"];
$newenv["SCRIPT_NAME"] = $_ENV["X_SCRIPT_NAME"];

if (is_executable($_ENV["X_SCRIPT_FILENAME"])) {
    $process = proc_open($_ENV["X_SCRIPT_FILENAME"], $descriptorspec, $pipes, NULL, $newenv);
    if (is_resource($process)) {
        fclose($pipes[0]);
        $head = fgets($pipes[1]);
        while (strcmp($head, "\n")) {
            header($head);
            $head = fgets($pipes[1]);
        }
        fpassthru($pipes[1]);
        fclose($pipes[1]);
        fclose($pipes[2]);
        $return_value = proc_close($process);
    }
    else {
        header("Status: 500 Internal Server Error");
        echo("Internal Server Error");
    }
}
else {
    header("Status: 404 Page Not Found");
    echo("Page Not Found");
}
?>

-- 
<KoRn> pour leurs voyages spatiaux, les ricains ont mis 5 ans et dépensés
       10 millions de dollars pour construire un stylo qui pouvait écrire
       dans l'espace et dans des conditions extrêmes de froid et de chaleur
<KoRn> les russes, eux, ont utilisé un crayon


Reply to: