PHP en ligne de commande (commande en ligne)
Je voudrais faire quelque chose comme tryruby.org.
Je prends une ligne de l'utilisateur (par exemple,echo __FILE__
) et je veux l'exécuter en PHP et retour sortie retour au client.
J'ai essayé de faire exec('php -r ' . $command, $output)
mais $output
contient toujours php section d'aide.
Quelqu'un peut m'aider ou donner des conseils comment implémenter cette fonctionnalité.
Thx a lot.
Essayez
Jetez un oeil à
Mieux encore, jetez un oeil à
Il sera liste de commandes utilisateurs autorisés pour le type de
exec("php -r \"$command\"", $output)
. Mais en tout cas c'est trop dangereux de faire les utilisateurs peuvent exécuter une commande sur votre machineJetez un oeil à
eval
php.net/manual/en/function.eval.php mais je ne recommanderais pas, juste de mettre n'importe quoi à partir de l'utilisateur. Vous souhaitez fortement filtre à l'avance.Mieux encore, jetez un oeil à
Runkit_Sandbox
.Il sera liste de commandes utilisateurs autorisés pour le type de
OriginalL'auteur balkon_smoke | 2012-04-05
Vous devez vous connecter pour publier un commentaire.
Il ressemble à votre problème est que vous n'êtes pas d'emballage de votre code à exécuter avec
' '
. Vous avez également besoin de se méfier de'
dans le code, des caractères spéciaux, des séquences d'échappement, etc.En fait, si vous insistez sur l'utilisation de
exec()
, il pourrait être préférable de le faire (pour éviter d'avoir à vous soucier de s'échapper et le tel):Vous pourrait utilisation
eval()
au lieu de ce que vous êtes à poster ci-dessus.Le principal problème ici (à la fois avec
eval()
et votreexec()
code), c'est que prendre le code PHP à partir de la saisie de l'utilisateur n'est tout simplement pas sûr:Suggestion
Puisque vous voulez retourner le résultat du code PHP, vous pourriez potentiellement faire quelque chose de cool avec l'AJAX, où l'on passe le code PHP dans un script (encodé en base 64, peut-être) en tant que paramètre:
AJAX Exemple à l'aide de jQuery:
Pour le codage en base 64 en JavaScript, voir ce.
OriginalL'auteur Xenon
De faire
php -r
que vous devez avoir à mettre le code que vous voulez exécuter entre'
.. votre code ..'
Exemple:
OriginalL'auteur Andreas Helgegren
Consulter 'eval()' et, plus important encore, pourquoi la fonction eval() et de ce que vous essayez de faire est très difficile à réaliser de manière sécurisée. L'imagerie par exemple, l'utilisateur qui les entrées:
Vous aurez besoin d'un peu de travail à faire de ce sécurisé, y compris regarder et de filtrage de tous les appels système étant fabriqués à partir de l'eval avais processus.
Acclamations
OriginalL'auteur smassey
http://tryruby.org semble interactive Ruby, shell. Ce qui semble être un bon point de départ.
Ici sont deux projets qui offrent un shell PHP: php_repl et phpsh.
L'autre partie est à l'interface web pour le shell interactif. Pour cette partie, je vous suggère de regarder repl.il, qui fournit ce service pour de nombreuses langues (mais malheureusement pas de PHP). Voici un lien à son code source.
Avec cette combinaison, vous devriez être en mesure de terminer la cour de projet.
OriginalL'auteur Carsten