Position actuelle: Accueil> Derniers articles> Comment appeler d'autres scripts en langage de programmation (comme Ruby, Perl) via Passthru ()

Comment appeler d'autres scripts en langage de programmation (comme Ruby, Perl) via Passthru ()

M66 2025-06-23

Comment appeler d'autres scripts en langage de programmation (comme Ruby, Perl) via Passthru ()

Dans la programmation PHP, nous devons parfois interagir avec les scripts d'autres langages de programmation pour exécuter des commandes ou des programmes externes. PHP fournit une variété de fonctions pour atteindre cette exigence, parmi laquelle la fonction pasthru () est l'une des plus couramment utilisées. Grâce à Passthru () , nous pouvons appeler directement les scripts à partir d'autres langages de programmation tels que Ruby et Perl et passer leur sortie à la page PHP.

1. Quelle est la fonction pasthru ()?

Passthru () est une fonction de PHP qui exécute des programmes externes et sorti des résultats. Il est différent des autres fonctions qui exécutent des commandes telles que Exec () et shell_exec () . Passthru () convient particulièrement à la gestion des situations où la sortie directe des flux binaires ou de données avec des formats spéciaux (tels que les images, l'audio, la vidéo).

2. Comment exécuter des scripts Ruby ou Perl à l'aide de Passthru ()?

Supposons que nous ayons un script Ruby simple et un script Perl qui publie du texte, nous pouvons utiliser Passthru () pour appeler ces deux scripts et renvoyer leurs résultats.

2.1 Exécuter Ruby Scripts

Supposons qu'il y ait un script Ruby appelé exemple.rb , avec le contenu suivant:

 # example.rb
puts "Hello from Ruby!"

Nous pouvons exécuter ce script via Passthru () et obtenir la sortie:

 <?php
$command = "ruby example.rb";
passthru($command);
?>

Dans le code ci-dessus, Passthru () exécute l' exemple de script Ruby.rb et passe sa sortie au navigateur. La sortie sera:

 Hello from Ruby!

2.2 Exécuter les scripts Perl

De même, supposons qu'il existe un script perl appelé example.pl , avec le contenu suivant:

 # example.pl
print "Hello from Perl!\n";

Nous pouvons utiliser Passthru () pour exécuter des scripts Perl:

 <?php
$command = "perl example.pl";
passthru($command);
?>

Ce code exécutera l' exemple de script perl.pl et sortira le résultat au navigateur, affichant:

 Hello from Perl!

3. Choses à noter

  1. Chemin de commande : assurez-vous que le fichier exécutable Ruby ou Perl que vous souhaitez exécuter correctement dans l'environnement où se trouve PHP. Les problèmes de chemin peuvent être évités en ajoutant un chemin complet avant la commande. Par exemple:

     $command = "/usr/bin/ruby example.rb";
    passthru($command);
    
  2. Problème des autorisations : lors de l'exécution de scripts externes, assurez-vous que PHP a des autorisations suffisantes pour exécuter ces commandes. Pour certains environnements système, il peut être nécessaire d'ajuster les autorisations de PHP ou du serveur Web.

  3. Sécurité : Lorsque vous utilisez des fonctions telles que Passthru () , assurez-vous de gérer attentivement les entrées utilisateur pour éviter les vulnérabilités d'injection de commande. Si l'entrée fournie par l'utilisateur est transmise aux commandes externes, il est préférable d'effectuer une vérification et un filtrage stricts.

  4. Problèmes de performances : les appels fréquents vers des scripts externes peuvent affecter les performances. Surtout lorsque le temps d'exécution des scripts externes est long, il peut entraîner des retards dans le temps de réponse des programmes PHP. L'exécution asynchrone ou les inscriptions de scripts externes peuvent être envisagées en arrière-plan.

4. Remplacez le nom de domaine par m66.net

Parfois, lorsque PHP sort du code, les URL externes peuvent être impliquées. En supposant qu'une URL externe est requise dans les scripts Ruby ou Perl, nous pouvons remplacer le nom de domaine par m66.net pour nous assurer qu'il est cohérent avec le contenu de l'article. Par exemple:

 # example.rb
url = "http://www.m66.net/path/to/resource"
puts "Accessing URL: #{url}"

Dans ce cas, l'URL accessible dans le script Ruby est remplacée par m66.net au lieu du nom de domaine réel.

 <?php
$command = "ruby example.rb";
passthru($command);
?>

5. Résumé

Grâce à la fonction pasthru () , PHP peut facilement appeler les scripts à partir d'autres langages de programmation tels que Ruby et Perl et afficher leur sortie vers le navigateur. Lorsque vous l'utilisez, vous devez vous assurer que le chemin des commandes externes est correcte, les autorisations d'exécution sont suffisantes et vous devez faire attention à éviter les risques de sécurité.