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.
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
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
Essayez d'utiliser un fichier de commandes
php -S localhost:8000
.bat
extension, server.bat
server.bat
votre serveur est prêt sur le http://localhost:8000
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"
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:
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 <?..?>
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"
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.
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
il suffit de suivre ces étapes si vous n'avez pas besoin de votre ancienne version php:
ça marche bien
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!