2009-08-19 7 views
0

Je suis en train d'exécuter une commande shell via:erreur script shell exécution en PHP

<php echo shell_execute("tac /home/kusmuk/access-logs/kusmuk.org"); ?> 

Mais il ne donne aucune sortie. Quelle pourrait être la raison?

Bien qu'il ne fonctionne pas, les lignes suivantes fonctionnent comme prévu:

<php echo shell_execute("ls -al triogrup.com"); ?> 
//outputs: -rw-r----- 2 root kusmuk 28640 Aug 19 17:44 kusmuk.org 

<php echo shell_execute("pwd"); ?> 
//outputs: /home/kusmuk/public_html 

Répondre

2

La pointe de Greg est bonne. Vous finirez probablement avec un problème de permissions.

Cependant, je dirais que c'est une bonne idée d'éviter de lancer des appels système de PHP si possible. Le débogage peut être pénible et si vous passez des paramètres, il est très facile de faire des trous de sécurité. Le code PHP natif est beaucoup plus facile à gérer. 'Tac' est assez simple pour que vous puissiez le faire correctement depuis PHP. Par exemple une version trivale qui crache le fichier entier en une fois:

$log= file_get_contents('/home/kusmuk/access-logs/kusmuk.org'); 
echo implode("\n", array_reverse(explode("\n", $log))); 
2

Essayez ceci:

echo shell_exec("tac /home/kusmuk/access-logs/kusmuk.org 2>&1"); 

Elle réorientera stderr vers stdout si je l'espère, vous devriez voir pourquoi il ne fonctionne pas

+0

Cela peut être quelque chose de simple comme 'tac' n'étant pas dans le PATH. –