2014-07-17 2 views
1

Étant un peu nouveau sur le sujet, j'ai installé un serveur web Ubuntu 12, le répertoire racine est/var/www/contenant mon script index.php et un sous-répertoire appelé "reduce" qui contient un binaire (un système d'algèbre informatique, le nom de fichier est également "réduire"). En utilisant SSH, je peux me connecter en tant que root et mon compte d'utilisateur non administrateur et cd dans le répertoire/var/www/et lancer le binaire en exécutant "./reduce/reduce". Cependant, si je fais la même chose avec mon fichier index.php, cela ne fonctionne pas. Voici le contenu essentiel de index.php (essentiellement pris de [1]):proc_open renvoie false mais n'écrit pas dans le fichier d'erreur - problème de permissions?

$descriptorspec = array(
0 => array("pipe","r"), 
1 => array("pipe","w"), 
2 => array("file","./error.log","a") 
) ; 

// define current working directory where files would be stored 
$cwd = './' ; 
// open reduce 
$process = proc_open('./reduce/reduce', $descriptorspec, $pipes, $cwd) ; 

echo "return value of proc_open: " . (($process === false) ? "false" : "true"); 

if (is_resource($process)) { 

    // anatomy of $pipes: 0 => stdin, 1 => stdout, 2 => error log 
    fwrite($pipes[0], 'load excalc $'); 
    fclose($pipes[0]) ; 

    // print pipe output 
    echo stream_get_contents($pipes[1]) ; 

    // close pipe 
    fclose($pipes[1]) ; 

    // all pipes must be closed before calling proc_close. 
    // proc_close() to avoid deadlock 
    proc_close($process) ; 

    echo "success!"; 

} 

La chose étrange est qu'aucun fichier ./error.log est créé et la seule sortie que je reçois est « la valeur de retour proc_open: false ". Pourquoi donc? Des problèmes d'autorisations? Le propriétaire, le groupe et les autres utilisateurs ont des droits d'exécution sur index.php et sur le binaire. Des idées?

Merci Jens

[1] http://www.molecularsciences.org/PHP/proc_open_tutorial_and_examples

Répondre

0

J'ai trouvé moi-même l'erreur: le fichier ./error.log n'existait pas. Après l'avoir créé manuellement, tout fonctionne bien.

Questions connexes