web-dev-qa-db-fra.com

Comment courir PHP À partir de la ligne de commande Windows dans WAMPServer

Je suis nouveau sur php et voulais lancer php en ligne de commande. J'ai installé WAMP et défini les "Variables système" dans mon dossier php (qui est C:\wamp\bin\php\php5.4.3).

Quand je vais à Run -> CMD -> Tapez php -a et appuyez sur Entrée, il est écrit interactive mode enabled. Mais quand j'écris echo 'Hi';, il ne montre rien.

Je ne vois même rien "php>" quand je tape php -a et appuie sur Entrée.

77
Daman

La CLI PHP en tant que appelée (php pour l'interface de ligne de commande) s'appelle php.exeIl réside dans c:\wamp\bin\php\php5.x.y\php.exe (où x et y sont les numéros de version de php que vous avez installés).

Si vous voulez créer des scripts php à exécuter à partir de la ligne de commande, c'est très simple et très utile.

Créez vous-même un fichier de commandes comme celui-ci, appelons-le phppath.cmd:

PATH=%PATH%;c:\wamp\bin\php\phpx.y.z
php -v

Remplacez x.y.z par un nom de dossier valide pour une version de PHP que vous avez installée dans WAMPServer

Enregistrez-le dans l’un de vos dossiers qui se trouve déjà sur votre CHEMIN afin de pouvoir l’exécuter de n’importe où.

Maintenant, à partir d’une fenêtre de commande, cd dans votre dossier source et exécutez> phppath. 

Puis courir

php votre_script.php

Cela devrait fonctionner comme un rêve.

Voici un exemple qui configure PHP Composer et PEAR si nécessaire et qui existent.

@echo off

REM **************************************************************
REM * PLACE This file in a folder that is already on your PATH
REM * Or just put it in your C:\Windows folder as that is on the
REM * Search path by default
REM * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
REM * EDIT THE NEXT 3 Parameters to fit your installed WAMPServer
REM **************************************************************


set baseWamp=D:\wamp
set defaultPHPver=7.1.9
set composerInstalled=%baseWamp%\composer
set phpFolder=\bin\php\php

if %1.==. (
    set phpver=%baseWamp%%phpFolder%%defaultPHPver%
) else (
    set phpver=%baseWamp%%phpFolder%%1
)

PATH=%PATH%;%phpver%
php -v
echo ---------------------------------------------------------------


REM IF PEAR IS INSTALLED IN THIS VERSION OF PHP

IF exist %phpver%\pear (
    set PHP_PEAR_SYSCONF_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_INSTALL_DIR=D:\wamp\bin\php\php%phpver%\pear
    set PHP_PEAR_DOC_DIR=D:\wamp\bin\php\php%phpver%\docs
    set PHP_PEAR_BIN_DIR=D:\wamp\bin\php\php%phpver%
    set PHP_PEAR_DATA_DIR=D:\wamp\bin\php\php%phpver%\data
    set PHP_PEAR_PHP_BIN=D:\wamp\bin\php\php%phpver%\php.exe
    set PHP_PEAR_TEST_DIR=D:\wamp\bin\php\php%phpver%\tests

    echo PEAR INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
) else (
    echo PEAR DOES NOT EXIST IN THIS VERSION OF php
    echo ---------------------------------------------------------------
)

REM IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM **************************************************************
REM * IF A GLOBAL COMPOSER EXISTS ADD THAT TOO
REM *
REM * This assumes that composer is installed in /wamp/composer
REM *
REM **************************************************************
IF EXIST %composerInstalled% (
    ECHO COMPOSER INCLUDED IN THIS CONFIG
    echo ---------------------------------------------------------------
    set COMPOSER_HOME=%baseWamp%\composer
    set COMPOSER_CACHE_DIR=%baseWamp%\composer

    PATH=%PATH%;%baseWamp%\composer

    rem echo TO UPDATE COMPOSER do > composer self-update
    echo ---------------------------------------------------------------
) else (
    echo ---------------------------------------------------------------
    echo COMPOSER IS NOT INSTALLED
    echo ---------------------------------------------------------------
)

set baseWamp=
set defaultPHPver=
set composerInstalled=
set phpFolder=

Appelez ce fichier de commande comme ceci pour utiliser la version par défaut de PHP

> phppath

Ou pour obtenir une version spécifique de PHP comme celle-ci

> phppath 5.6.30
67
RiggsFolly

Je me souviens d'une fois où je suis tombé par hasard sur ce problème il y a quelques années, c'est parce que Windows n'a pas de ligne de lecture, donc pas de shell interactif, pour utiliser le mode interactif php sans support de ligne de lecture, vous pouvez le faire à la place:

C:\>php -a 
Interactive mode enabled 

<?php 
echo "Hello, world!"; 
?> 
^Z 
Hello, world!

Après être entré en mode interactif, tapez avec les balises php d'ouverture (<?php) et de fermeture (?>), et terminez par le contrôle Z (^Z) qui indique la fin du fichier.

Je rappelle aussi que j'ai trouvé la solution à partir du commentaire de l'utilisateur du site php: http://www.php.net/manual/fr/features.commandline.interactive.php#105729

36
Hendra Uzia

Essayez d'utiliser un fichier de commandes

  1. Bloc-notes ouvert
  2. tapez php -S localhost:8000
  3. enregistrer le fichier en tant que .bat extension, server.bat
  4. maintenant, cliquez sur le fichier server.bat votre serveur est prêt sur le http://localhost:8000

Dépendance

si vous avez une erreur, php ne reconnaît aucune commande interne ou externe puis allez à la variable d’environnement et modifiez le chemin vers php.exe "C:\wamp\bin\php\php5.4.3"

12
Nishchit Dhanani

Le problème que vous décrivez semble, par exemple, que votre version de PHP manque le module readline PHP, ce qui empêche le shell interactif de fonctionner. Je base ceci sur ce PHP bogue soumission.

Essayez de courir 

php -m

Et voir si "readline" apparaît dans la sortie.

Il peut y avoir de bonnes raisons d'omettre readline de la distribution. PHP est généralement exécuté par un serveur Web. il n'est donc pas vraiment nécessaire pour la plupart des cas d'utilisation. Je suis sûr que vous pouvez exécuter le code PHP dans un fichier à partir de la commande Invite, en utilisant:

php file.php

Il y a aussi le projet phpsh qui fournit un (meilleur) shell interactif pour PHP. Cependant, certaines personnes ont eu du mal à l’exécuter sous Windows (je n’ai pas essayé Cela moi-même).

Edit: Selon la documentation ici , readline n'est pas supportée sous Windows:

Remarque: cette extension n'est pas disponible sur les plates-formes Windows.

Donc, si cela est correct, vos options sont les suivantes:

  • Évitez le shell interactif et exécutez simplement le code PHP dans les fichiers à partir de la ligne de commande - cela devrait bien fonctionner
  • Essayez de faire fonctionner phpsh sous Windows
11
driis

Si vous souhaitez simplement exécuter un extrait de code rapide, vous pouvez utiliser l'option -r:

php -r "echo 'hi';"

-r permet d'exécuter du code sans utiliser les balises de script <?..?>

10
James Lock

Vous pouvez exécuter des pages php en utilisant php.exe Créer un fichier php avec le code php et dans le cmd write "[PATH to php.ext]\php.exe [path_to_file]\file.php" 

3
Adidi

MIS &AGRAVE; JOUR Après quelques recherches, la meilleure solution consistait à utiliser cet info un autre thread de stackoverflow pour éviter les entrées ctrl + z et également à partir de la sortie scree . Donc, au lieu de php -a, vous devrait utiliser call "php.exe" -f NAMED_SCRIPT.php

OLD La lecture en ligne n'est pas possible sous Windows, donc aucun des shells php existants écrits en php ne fonctionnera. Mais il existe une solution de contournement utilisant le mode -a interactif.

2 problèmes communs ici. Vous ne pouvez pas voir le résultat jusqu'à ce que la commande CTRL Z soit exécutée pour indiquer la fin du code/fichier comme EOF. Dans ce cas, le résultat est dans la plupart des cas un résultat imprimé et une fenêtre à fermeture rapide. Quoi qu'il en soit, vous serez renvoyé à cmd et non au mode -a interactif.

Enregistrez ce contenu dans un fichier .bat et définissez votre PATH PHP dans des variables Windows, ou modifiez php.exe en "chemin complet du fichier exe":

::
:: PHP Shell launch wrapper
::
@ECHO off
call "php.exe" -a

echo.
echo.

call "PHP Shell.bat"

Ceci est un simple lancement en mode batch - un mode php.exe. Quand il lance php, arrête le script même si aucune pause n’est écrite car elle est "dans" l’attente interactive pour la saisie. Lorsque vous appuyez sur CTRL Z, obtient le SIGSTEP (étape suivante) et non le SIGSTOP (fermer, CTRL + C généralement), puis lisez l'instruction suivante, qui est un appel récursif à .bat. Parce que vous êtes toujours en mode PHP -a, aucune commande de sortie. Vous devez utiliser CTRL + C ou appuyer sur la croix de sortie avec la souris. (Pas d'alt + f4)

Vous pouvez également utiliser le convertisseur "Bat to Exe" pour une utilisation facile.

2
erm3nda

La solution suivante est spécifiquement pour les environnements wamp:  

Cela m'a un peu moqué, j'ai essayé toutes les autres suggestions. $ PATH, etc. a même consulté le registre Windows à la recherche d'indices:

Le GUI (wampmanager) indique que j'ai la version 7 sélectionnée et oui, si je phpinfo () dans une page du navigateur, il me dira que sa version est 7.x.x et que php -v dans la commande Invite signale un 5.x.x.

Si vous cliquez avec le bouton droit de la souris sur wampmanager à l’icône-> outils-> supprimer les versions inutilisées et supprimer l’ancienne version, laissez-le redémarrer les services, puis la commande Invite renverra un message 7.x.x.

Cette solution signifie que vous n'avez plus l'ancienne version si vous voulez passer d'une version à l'autre, mais il existe un fichier de configuration dans C:\wamp64\wampmanager.conf qui semble spécifier la version à utiliser avec la CLI (le paramètre s'appelle phpCliVersion). . Je l'ai changé, j'ai redémarré le serveur ... je pensais l'avoir résolu, mais sans effet, j'étais peut-être un peu impatient, alors j'ai le sentiment qu'il pourrait en résulter un certain kilométrage.

J'espère que ça aide quelqu'un

1
BuddhaLincoln

il suffit de suivre ces étapes si vous n'avez pas besoin de votre ancienne version php:

  • ouvrez wamp et cliquez avec le bouton droit sur wamp manager que vous le souhaitez: outils/Modifier la version CLI PHP puis modifier la version php au plus tard
  • une autre fois, faites un clic droit sur wamp manager que go: tools/Supprimez les versions unuserd et supprimez la version la plus ancienne sur laquelle votre système insiste pour qu'il soit votre version php de pc: D
  • allez dans le panneau de configuration/compte d'utilisateur/changez mes variables d'environnement et dans la variable PATH, cliquez sur Editer et ajoutez votre dernier chemin de version php qui se trouve dans votre dossier bin du serveur wamp
  • fermez toutes les lignes de commande ou les IDE, redémarrez-les et vérifiez php -v

ça marche bien

0
Mohammad Hadi

C'est parce que vous êtes en «mode interactif», où php évalue tout ce que vous tapez. Pour voir le résultat final, vous faites 'ctrl + z' et entrez. Vous devriez voir le résultat évalué maintenant :)

p.s. lancez le cmd en tant qu'administrateur!

0
saan