Maison  >  Article  >  développement back-end  >  Comment dépanner les fonctions system() et exec() pour exécuter des programmes externes en PHP ?

Comment dépanner les fonctions system() et exec() pour exécuter des programmes externes en PHP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-21 08:17:30393parcourir

How to Troubleshoot system() and exec() Functions for Running External Programs in PHP?

Exécution de programmes externes en PHP : dépannage de system() et exec()

Pour lancer des processus externes dans des environnements PHP contrôlés, envisagez de dépanner le fonctions system() et exec(). Bien que ces fonctions puissent exécuter des processus silencieux, elles peuvent ne pas parvenir à afficher des applications avec une interface graphique visible, telles que le bloc-notes.

La solution réside dans l'activation de l'option « Autoriser le service à interagir avec le bureau » dans les paramètres du compte de connexion. du service Apache. Cela permet au service de se lancer et d'interagir avec les programmes GUI.

Exemple :

<code class="php"><?php
// Spawn notepad.exe and immediately continue script execution
pclose(popen("start /B notepad.exe", "r"));

// Spawn notepad.exe and wait for application to close
system('start notepad.exe');</code>

Remarque :

  • Cette solution a été testée sur Windows XP mais peut nécessiter des ajustements pour d'autres versions de Windows.
  • Si le service Apache s'exécute sous un compte utilisateur de domaine, la case « Autoriser le service à interagir avec le bureau » n'est pas accessible. Dans ce cas, envisagez de séparer le service en deux composants : un avec les privilèges du compte utilisateur et un pour l'interaction avec le bureau, car diviser ces fonctionnalités n'est pas pratique pour les services essentiels tels que les serveurs Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn