Comment exécuter le script sur mon Ubuntu via PHP depuis le site

1

Comment utiliser PHP pour exécuter un script sur mon serveur Ubuntu? Le site est évidemment hébergé sur le même ordinateur.

J'ai lu exec_shell()et essayé ceci

<?php
    $output = shell_exec("ls /var/www");
    echo "<h1>Output: " . $output . "</h1>";
?>

Mais cela ne fait écho à rien sur le site, ai-je mal compris la fonction?

Le plan consiste à exécuter un script sur mon ordinateur Ubuntu, en redémarrant quelques serveurs de jeu lorsque je clique sur un bouton du site Web.

Jonathan Öhrström
la source
Selon la documentation : "La sortie de la commande exécutée ou NULL en cas d'erreur ou si la commande ne produit aucune sortie." Une erreur s'est peut-être produite, probablement parce que le processus s'exécute avec un nom d'utilisateur auquel il n'a pas accès /var/www. Vérifiez les permissions retournées avec ls -ld /var/wwwdans shell, essayez peut-être aussi différentes commandes dans shell_exec().
Sergiy Kolodyazhnyy
Essayez $output = shell_exec('ls /var/www');et echo "<h1>Output: $output</h1>";, c'est comme ça que le manuel le fait.
dessert le
@SergiyKolodyazhnyy Quel utilisateur est utilisé pour les shell_exec()commandes?
Jonathan Öhrström le
@dessert N'a malheureusement pas travaillé non plus
Jonathan Öhrström
1
@ JonathanÖhrström, vous avez dit « Mais il n » a t écho quoi que ce soit sur le site » , mais si la fonction discuté vous ne parvenez pas à voir absolument, au moins, <h1>Output:</h1>dans le navigateur - ne pas?
pa4080

Réponses:

2

J'ai testé votre code et il fonctionne correctement sur mon serveur. Il donne la sortie suivante:

Output: apps awstats cgi-bin clients conf error html icons ispconfig manual mauco.org med-01.uc.cl php-fcgi-scripts usage

Ce sont les dossiers dans / var / www

Je pense que vous pouvez avoir un problème de privilèges. Que se passe-t-il si vous essayez avec cette commande:

  $output = shell_exec("ls /tmp");

Vous pouvez également vérifier si quel utilisateur est utilisé par apache / nginx

 $output = shell_exec("whoami");

S'il vous plaît inclure des captures d'écran de vos résultats.

Philippe Delteil
la source
passthru();semble bien fonctionner, mais shell_exec ne fonctionne toujours pas. À l'aide de passhthru, j'ai découvert qu'apache utilisait www-data comme utilisateur
Jonathan Öhrström le
Ce $ output = shell_exec ("ls / tmp"); ne vous donne aucune sortie?
Philippe Delteil le
Correct. Ne fonctionne pas du tout
Jonathan Öhrström