Comment ouvrir une application GUI externe depuis un navigateur Web en utilisant PHP?

Je suis nouveau dans le développement web. J’essaie d’exécuter un script shell en utilisant le shell_exec() de PHP. À l’intérieur du script, j’essaie d’appeler une application graphique (Qt). Lorsque j’ai exécuté le script PHP à partir d’un terminal, l’application a démarré comme prévu. Mais quand je l’ai ouvert depuis le navigateur, une page blanche vide est apparue.

J’utilise Ubuntu avec un serveur apache2 fonctionnant en tant que service. Lorsque j’ai effectué une recherche dans Google, le problème similaire est résolu dans l’environnement Windows en autorisant le service apache à interagir avec le bureau.

Script PHP:

  

testcmd.sh:

 ./Program1 

Toute aide fournie sera très appréciée.

Il est difficile de savoir ce que vous demandez.

Si vous souhaitez que la navigation vers un site Web donné lance un script PHP qui ouvrira une application graphique avec laquelle le client pourra interagir, la réponse est “vous ne pouvez pas”. La raison en est que la façon dont fonctionne l’installation est que le serveur et le client s’exécutent sur des machines différentes et que votre PHP s’exécute sur le serveur. En tant que tel, le client ne voit jamais le programme en cours d’exécution.

Ce qui précède est également vrai pour Windows. La réponse que vous citez dans votre question ne s’applique pas à un serveur exécuté sur une autre machine que le client.

Si, pour une raison quelconque, vous voulez quelque chose qui ne fonctionne que lorsque le serveur et le client s’exécutent sur le même ordinateur (ou qu’il y a quelqu’un qui regarde l’affichage du serveur), vous devez faire l’équivalent de la réponse Windows.

L’affichage graphique sous Linux (en supposant que vous wayland pas wayland ) utilise un protocole appelé X11. Pour que l’affichage apparaisse, votre programme graphique a besoin de deux choses. Le premier est de savoir quel affichage doit être utilisé. Ceci est fourni avec une variable d’environnement appelée DISPLAY . La seconde est une autorisation d’utiliser réellement cet affichage.

Donc, pour que votre script PHP exécute une application graphique qui affiche son interface graphique, vous devez d’abord effectuer les étapes suivantes:

  1. Définissez la variable DISPLAY sur la valeur correcte (copie depuis votre environnement de bureau).
  2. Exécutez xauth add something , où vous pouvez obtenir quelque chose en exécutant la xauth list sur votre environnement de bureau.

Si vous faites ces deux choses (dans cet ordre), votre interface graphique devrait apparaître.