Является ли #!/Usr/bin/env для запуска PHP из командной строки?
Часто, когда я вижу PHP, который предназначен для запуска из командной строки, он будет иметь эту строку #!/usr/bin/env php
в верхней части файла, как это...
#!/usr/bin/env php
<?php
// code
?>
Я хотел знать, имеет ли это значение только момент, когда файл запускается в системе Linux/Unix или необходим для работы в Windows?
Ответы
Ответ 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).