Souvent, quand je vois PHP qui est destiné à être exécuté à partir de la ligne de commande, il aura cette ligne #!/usr/bin/env php
en haut du fichier comme ceci ...
#!/usr/bin/env php
<?php
// code
?>
Je voulais savoir si cela est destiné uniquement au moment où le fichier est exécuté sur un système Linux/Unix ou est également nécessaire pour fonctionner sous Windows?
La ligne "hashbang" est requise pour la détection automatique du type de script. Il permet ce type d'utilisation:
[pfisher ~]$ chmod +x run-me.php
[pfisher ~]$ run-me.php
Cette ligne n'est pas nécessaire si vous passez le nom de fichier comme argument à l'interpréteur php, comme ceci:
[pfisher ~]$ php run-me.php
Non, ce n'est pas le cas, vous pouvez utiliser directement
#!/path/to/php
Exécuter php (ou toute autre chose) via l'utilitaire env est une mesure de sécurité faible. Dépendant de la plate-forme, "corrigera" PATH, LIB et d'autres variables d'environnement en fonction de divers fichiers de configuration et supprimera potentiellement certaines des valeurs dangereuses qui s'y trouvent (par exemple env sur HPUX).
Il s'agit également de limiter la portée des extensions Shell sur certains environnements. (Voir man 1 env sur Linux).