Подтвердить что ты не робот

Является ли #!/Usr/bin/env для запуска PHP из командной строки?

Часто, когда я вижу PHP, который предназначен для запуска из командной строки, он будет иметь эту строку #!/usr/bin/env php в верхней части файла, как это...

#!/usr/bin/env php
<?php
    // code
?>

Я хотел знать, имеет ли это значение только момент, когда файл запускается в системе Linux/Unix или необходим для работы в Windows?

4b9b3361

Ответ 1

Строка "hashbang" требуется для автоматического обнаружения типа script. Он позволяет использовать этот вид:

[pfisher ~]$ chmod +x run-me.php
[pfisher ~]$ run-me.php

Эта строка не нужна, если вы передаете имя файла в качестве аргумента интерпретатору php, например:

[pfisher ~]$ php run-me.php

Ответ 2

Нет, нет, вы можете напрямую использовать

#!/path/to/php

Запуск php (или что-либо еще) с помощью утилиты env является слабым мерилом безопасности. Dpending на платформе будет "исправлять" PATH, LIB и другие переменные среды в соответствии с различными конфигурационными файлами и потенциально удалять некоторые из опасных значений там (например, env на HPUX).

Также необходимо ограничить объем оболочек-расширений в определенных средах. (См. Man 1 env в Linux).