10
votes

Exécuter la commande Windows dans PHP

est-il possible d'exécuter le code de ligne de commande Windows à partir de PHP? Mon code de ligne de commande Windows est le suivant:

<?php 
error_reporting(E_ALL); 
try {

echo exec('C:\xampp\mysql\bin>mysqlbinlog --start-datetime="2011-04-21 10:31:44" c:\xampp\mysql\data\binlog\bin-log.000001 > c:\xampp\mysql\data\binlog\sql.txt');

} catch (Exception $e) {
echo $e->getMessage();
}


3 commentaires

Que se passe-t-il quand vous essayez?


Quel est le problème? Vous pouvez l'utiliser n'importe qui des deux.


Je pense que vous pouvez utiliser shell_exec fonction pour y parvenir ... si System () et EXEC () ne fonctionne pas


6 Réponses :


0
votes

Donnez-lui juste un essai. Ou si vous voulez un exemple de sable de sable, essayez d'exécuter

<?php echo exec("whoami");?>


2 commentaires

J'utilise cet exécutif ('C: \ Xampp \ mysql \ bin> mysqlbinlog --Start-datetime = "2011-04-21 10:31:44" C: \ xampp \ mysql \ data \ binlog \ bin-log.000001 > sql.txt ');


Vous pouvez soit vérifier votre php.ini pour voir si EXED () est autorisé. Ou mettre error_rporting (e_all); au début de votre script pour voir quelle est l'erreur est.



2
votes

Si vous ne pouvez pas exécuter la commande directement dans Exec (), ce que vous pouvez faire est de créer un fichier de commandes avec la commande et de la placer sur la racine de votre site Web. Ensuite, il suffit de courir: xxx


0 commentaires

0
votes

C: \ xampp \ mysql \ bin> mysqlbinlog n'est pas une commande.

Je pense que vous voulez dire c: \ xampp \ mysql \ bin \ mysqlbinlog .

Notez le remplacement du > dans un \ .

Le > est uniquement visible dans l'invite de commande sous forme de séparateur (pour les yeux), mais vous ne devez pas l'utiliser comme celle-ci dans une commande à moins que vous n'essayez de rediriger votre sortie. (que vous faites à nouveau plus tard dans la ligne). Donc, il suffit de remplacer ce premier > dans un \ et votre commande s'exécutera.


1 commentaires

Obtenez-vous des erreurs? Vous ne devriez pas récupérer d'eccho de l'exécutant dans ce cas. Vous redirigez la sortie sur SQL.TXT. Après avoir remplacé le> in \ avant mysqlbinogog il a fonctionné ici comme prévu. (Un SQL.TXT est créé) Si vous souhaitez la sortie dans le navigateur, vous devez supprimer le > C: \ xampp \ mysql \ data \ binlog \ sql.txt .



7
votes

J'utilise WAMP et la seule solution était les suivantes:

au panneau de commande / outils administratifs / services, recherche de wampapache64, httpd ou quelque chose comme ça. Sur l'onglet Connexion Cochez le bouton "Autoriser le service d'interaction avec le bureau"

J'espère que cela vous aidera!


1 commentaires

Je n'ai trouvé rien de même dans le panneau de commande.



14
votes

Si vous êtes capable d'exécuter vos commandes manuellement à partir de la ligne de commande, mais pas via WAMP, que l'utilisateur Le service Apache est exécuté, comme ne dispose pas des autorisations nécessaires pour exécuter vos commandes et vos binaires (ni interagir avec le bureau si C'est une interface graphique).

Par défaut, Service Apache exécuté sous Compte d'utilisateur: NT Authority \ System

Modifiez-le à votre utilisateur personnalisé (utilisateur avec les droits d'administration) en suivant les étapes ci-dessous,

  1. Hit Windows + R qui s'ouvre sur Exécuter
  2. TYPE "SERVICES.MSC" qui ouvre la liste des services Windows
  3. Recherchez et sélectionnez votre service Apache et ouvrez ses propriétés
  4. Allez à l'onglet Connexion et modifiez le compte de "Système local" sur un autre utilisateur / compte
  5. redémarrez votre service Apache

    codage heureux: -)


4 commentaires

J'ai dû utiliser l'administrateur


@Black Vous pouvez utiliser les informations d'identification de l'administrateur


Après avoir utilisé l'administrateur, je n'ai pas pu démarrer le service


Essayez d'utiliser le processus PHP de la ligne de commande en tant qu'administrateur. Stackoverflow.com/a/67910311/6862516



0
votes

exécuter invite de commande en tant qu'administrateur .

traverser au dossier doc_root xxx

lecture avec la commande ci-dessous, < pré> xxx

si doc_root a un dossier public différent xxx

Cela a fonctionné bien pour moi.

Assurez-vous que le php.exe est ajouté au chemin de l'environnement.


0 commentaires