Quelle est la relation entre php.exe, php-win.exe et cmd.exe sous Windows?
Pendant toutes mes années à exécuter PHP CLI sous Windows, j'ai démarré mes scripts avec des .batfichiers comme celui-ci:
php test.php
phprésout en C:\PHP\php.exeraison de mon PATH.
Aucun problème avec ça. Sauf qu'ils obtiennent toujours cette cmd.exeicône / groupe de barre des tâches embêtants .
Donc, il y a quelques minutes à peine, j'ai créé un raccourci directement sur mon bureau C:\PHP\php.exeet entré le chemin complet de mon script en tant qu'argument. Maintenant, quand je double-clique sur cette icône "PHP" sur mon bureau, elle ne s'ouvre pas cmd.exe, mais directement PHP.exe, de sorte qu'il obtient une icône PHP au lieu de l'icône cmd.exe, et se place dans son propre groupe de barre des tâches.
Cependant, outre l'icône, il semble identique à cmd.exe. Je suis assez sûr qu'il est cmd.exe, juste avec l'icône de PHP. Ou est-ce une sorte de terminal personnalisé, entièrement séparé de cmd.exe?
Il existe également un php-win.exeexécutable dans C:\PHP. Je n'ai jamais été en mesure de comprendre ce que c'est ou en quoi il diffère php.exedans le même répertoire. Si je fais la même chose que ci-dessus avec lui, il se bloque instantanément avec l'erreur PHP enregistrée:
cli_get_process_title(): cli_get_process_title had an error: Windows error code: 6
Il n'y a aucune mention dans le fichier "README" de cet exécutable.
J'ai plusieurs fois expérimenté et essayé d'utiliser PowerShell, mais il y a toujours des problèmes et des problèmes étranges, c'est pourquoi je suis resté fidèle à cmd.exe. De plus, devoir créer une tonne de raccourcis tout le temps et modifier leurs arguments pour représenter les chemins complets de mes scripts PHP est bien pire que d'avoir des fichiers .bat qui exécutent mes scripts PHP de manière beaucoup plus agréable, bien qu'avec le cmd embêtant. icône exe au lieu de celle de PHP.
Cette chose "Windows Terminal" dont j'ai apparemment entendu parler pendant des années, mais elle est toujours introuvable sur ma machine.
Idéalement, je voudrais pouvoir avoir ma propre icône personnalisée, ni extraite de cmd.exe ni de php.exe, mais le seul moyen que j'ai trouvé pour le faire dans le passé est de copier cmd.exe, de le modifier et puis utilisez-le partout. Ce n’est pas une solution élégante ou sensée.
Veuillez m'expliquer à quoi sert php-win.exe, si php.exe est en fait juste cmd.exe avec une icône différente, et s'il y a quelque chose de simple que je peux faire pour obtenir ma propre icône / image de marque pour mon système PHP CLI.
Réponses
Aucun problème avec ça. Sauf qu'ils obtiennent toujours cette icône / groupe de barre des tâches embêtants cmd.exe.
Ils le feront, car les scripts .bat sont toujours exécutés via cmd.exe (comme - afin qu'ils obtiennent la fenêtre de console que cmd.exe lui-même obtient.
Cependant, outre l'icône, il semble identique à cmd.exe. Je suis presque sûr que c'est cmd.exe, juste avec l'icône PHP. Ou est-ce une sorte de terminal personnalisé, entièrement séparé de cmd.exe?
Le terminal a toujours été séparé de cmd.exe. Vous regardez la fenêtre standard de la console Windows, maintenant également connue sous le nom de Conhost . (À l'ère Win2000 / XP, il faisait partie de CSRSS.)
Cmd.exe et php.exe n'ont pas d'interface utilisateur graphique propre - ils invoquent simplement par magie Conhost au démarrage.
Il existe également un exécutable php-win.exe dans C: \ PHP. Je n'ai jamais été en mesure de comprendre ce que c'est ou en quoi il diffère de php.exe dans le même répertoire.
Comme mentionné, php.exe appelle la fenêtre du terminal Conhost au démarrage - mais ce n'est pas quelque chose que fait php.exe , cela se produit automatiquement car Windows reconnaît que le fichier php.exe est marqué comme "application console". Il sera toujours lancé dans une console, qu'il s'agisse d'un hérité de cmd.exe (lors de l'exécution d'un script .bat) ou d'un nouveau (en double-cliquant sur php.exe).
Donc php-win.exe est presque exactement la même chose, mais le fichier .exe n'est pas marqué comme "console" - il est marqué comme "application GUI" à la place, et fonctionnera complètement invisible (sauf si vous l'utilisez pour exécuter un script qui par exemple, appelle PHP-GTK ou PHP / Tk pour créer des fenêtres GUI).
Pour la même raison, Python est livré avec python.exe et pythonw.exe sous Windows - l'un est destiné à la création d'outils principalement basés sur la CLI, l'autre à la création d'applications graphiques.
Cette chose "Windows Terminal" dont j'ai apparemment entendu parler pendant des années, mais elle est toujours introuvable sur ma machine.
Il peut être installé via le Microsoft Store si vous avez Windows 10.
(Notez que si vous l'installez, il ne remplacera pas complètement Conhost - il ne sera utilisé que lorsque vous ouvrirez vous-même l'application Terminal. Double-cliquez sur une console .exe l'affichera toujours dans Conhost.)
Idéalement, je voudrais pouvoir avoir ma propre icône personnalisée, ni extraite de cmd.exe ni de php.exe, mais le seul moyen que j'ai trouvé pour le faire dans le passé est de copier cmd.exe, de le modifier et puis utilisez-le partout. Ce n’est pas une solution élégante ou sensée.
Copiez php.exe et modifiez celui-ci. Ou utilisez php-win.exe avec un module PECL (peut-être w32api) qui vous permet de créer une fenêtre de console à la demande.