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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.