Je veux exécuter un programme C ++ avec mon dos PHP. Le programme C ++ est responsable de la suppression de périphériques USB tels que les bâtons USB de mon PC. Lorsque j'ouvre le programme (qui se trouve sur un lecteur local séparé) avec la CLI sans droits d'administration, le programme commence et termine le travail correctement.
Lorsque je démarre le programme avec PHP en utilisant Le programme retourne: p> Array (2) ([0] => (String) D: \ D: \. \ D: Échec [1] => (chaîne)
Résultat = 0x33) P>
blockQuote> Quelqu'un une suggestion? p> p> EXEC ("/ to / mon / programme.exe et paramètres ") code> qui est littéralement la même chose que de la CLI, le programme commence et renvoie" échoué "alors quelque chose est différent lorsque vous utilisez la CLI. P> < p> Le code C ++: p>
3 Réponses :
première exécution de la commande via le client PHP (de Shell) .
$ php.exe -f file.php //Check link above. I am used to Linux and you might need diffrent params
Pourrait-il être qu'un programme démarré par PHP / IIS n'a aucune autorisation de modifier / modifier un autre lecteur?
Je suis Guy Linux alors je ne sais pas. Mais vous pouvez poser cette question ici: serverfault.com/questions/tagged/iis
Votre solution avec les clés de registre ne fonctionne pas pour moi car je ne sais pas comment configurer ces clés requises
Voulez-vous dire que vous n'avez pas lu le contenu de votre propre lien? Je veux dire les clés de registre qui sont mentionnées dans l'article php.net
Je suis un gars Linux! Cependant, j'ai travaillé avec PHP et Windows dans le passé et je ne me souviens pas d'une action requise pour configurer PHP dans le registre Windows. Si tel est nécessaire, lisez le manuel. Le test proposé est conçu pour tester la capacité de PHP à exécuter un script en dehors de l'IIS. Les questions de syntonisation Windows doivent être sur Serverfault
Si vous exécutez PHP en mode sans échec, seuls les fichiers de la Il semble que vous exécutez dans l'environnement Windows. Vous voudrez peut-être envisager d'exécuter cela à l'aide de Windows Shell, ce qui vous donne plus de contrôle sur vos programmes d'exécution externes et peut renvoyer des informations supplémentaires s'il échoue et aidez à diagnostiquer ce que le problème sous-jacent est avec le Exec () Strong> fonction. p> Commentaires du manuel PHP en ligne sont les suivants: p> Démarrer NotePad.exe Réduit à l'arrière-plan: P> <?php
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("mspaint.exe", 3, true);
?>
Cette solution ne fonctionne pas pour moi, php se bloque sur la ligne de ventre
Cela ne fonctionne toujours pas, mais je ne veux pas perdre la prime.
Est-ce que vous courez sous Windows? Si oui, quelle saveur? Quelle est l'erreur que vous obtenez? Essayez ceci pour installer WSH: Microsoft.com/en-us/ Télécharger / Détails.aspx? Id = 8247
Cet article explique comment configurer un pool d'applications et l'associer à votre service PHP. Une fois que cela est fait, cliquez avec le bouton droit de la souris sur le pool d'applications que vous avez créé et sélectionnez «Paramètres avancés». Sous le titre "Modèle de processus", vous verrez un paramètre nommé "identité"; Modifiez la valeur en un compte qui dispose des autorisations que vous recherchez (telles que «Système local» ou «Service local»). p>
L'identité du pool d'applications par défaut (sous lequel votre service PHP est en cours d'exécution) n'est pas assez puissant pour vos besoins! P>
Parce que la fonction
exécutée code> exécute le programme demandé à l'aide du même utilisateur que le serveur Web? Ce qui n'a probablement aucun droit de faire ce que vous voulez faire.C'était aussi ma première pensée, mais l'utilisateur authentifié a obtenu les mêmes droits que le système.
Il suffit de montrer
ls -l code> de ce fichier exe plus Vous devez obtenir plus de commentaires de Exec afficher toutes les erreurs et ainsi de suite@ Zgr3Doo Que voulez-vous dire par montrez simplement LS -L de ce fichier EXE?
@ Joachimpileborg d'une autre suggestion?
@SnickBrack, Joachim a raison, votre utilisateur authentifié peut avoir les mêmes droits que le système, mais probablement l'utilisateur du serveur Web ne le fait pas. Essayez PS Aux pour voir quel est l'utilisateur exécutant votre serveur Web.
On dirait que nous avons besoin de plus d'informations. Quelles sont les valeurs de votre résultat et de votre type de veto sur l'échec?
L'une des premières choses que vous devez fournir est sur laquelle votre exécutable aborde et affirme qu'il a échoué. Il y a probablement une question de permission .. Mais pour être sûr que vous devez découvrir à quelle ligne le code fonctionne réellement. Cela signifie que certains journaux seront pratiques.
Mon exécutable retinte le suivant:
Array (2) ([0] => (String) D: \ D: \\. \ D: Échec [1] => (String) Résultat = 0x33) CODE>