web-dev-qa-db-fra.com

#! / Usr / bin / env est-il requis pour exécuter PHP à partir de la ligne de commande?

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?

27
JasonDavis

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
29
Patrick Fisher

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).

1
Ahmed Masud