2010-08-11 8 views
0

J'ai une commande unix écrite dans un fichier et j'ai besoin de PHP pour le lire et l'exécuter. La raison pour laquelle il doit être lu à partir d'un fichier est que les symboles de commandes gâchent le script quand ils le mettent directement dedans. Jusqu'à présent, j'ai ceci:PHP lire la commande à partir du fichier et l'exécuter

<?php 
$command = readfile("http://localhost/command.txt"); 
echo shell_exec($command); 
?> 

Sur TOURNE, tout ce que je reçois est la valeur du fichier texte et la commande est exécutée. Y a-t-il un moyen de le faire?

Merci pour toute aide

+0

comment les symboles de commandes gâchent-ils le script? Vous devriez être en mesure de leur échapper correctement (ou les mettre en guillemets simples ('). Je suis également en train de courir sous des restrictions de safemode – Doon

Répondre

2

La fonction readfile() ne fonctionne pas comme vous le pensez. Il affiche le contenu du fichier dans le navigateur et renvoie le nombre d'octets lus.

Au lieu de cela, vous voulez file_get_contents():

$command = file_get_contents('http://localhost/command.txt'); 
echo shell_exec($command); 

Mais une question: Pourquoi êtes-vous tiriez le fichier de commande à partir d'un site Web? Pourquoi pas les fichiers locaux-ystem?

+0

Je pourrais faire le système de fichiers local à aucun mieux (à ma connaissance). – nosedive25

+2

Le système de fichiers local est meilleur.La seule raison de tirer d'un site Web est si vous en avez besoin pour être sur un site Web (il a des frais généraux beaucoup plus élevés que la simple lecture d'un fichier local). .. Et il est moins sûr car il nécessite un aller-retour TCP (pas beaucoup pour localhost, mais significativement plus pour tout autre domaine en raison d'attaques d'empoisonnement DNS et autres) ... Si vous allez exécuter les résultats, le lire d'un fichier local en règle générale ... – ircmaxell

+0

Brb, je suis dans votre hosts.conf. – Incognito

0

Je pense que vous trop compliquer les choses avec cette approche. Essayez de mettre directement la chaîne dans votre script php, et montrez ce qui ne va pas.

Questions connexes