#!/ usr / bin / env是否需要从命令行运行PHP?

时间:2012-01-05 05:01:11

标签: php command-line command-line-interface

通常当我看到要从命令行运行的PHP时,它会在文件顶部有这一行#!/usr/bin/env php,就像这样......

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

我想知道这是否仅适用于在Linux / Unix系统上运行文件或在Windows上运行时是否需要?

3 个答案:

答案 0 :(得分:27)

自动检测脚本类型需要“hashbang”行。它实现了这种用法:

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

如果将文件名作为参数传递给php解释器,则不需要该行,如下所示:

[pfisher ~]$ php run-me.php

答案 1 :(得分:1)

不,不,你可以直接使用

#!/path/to/php

通过env实用程序运行php(或其他任何东西)是一种弱安全措施。根据平台,将根据各种配置文件“修复”PATH,LIB和其他环境变量,并可能删除其中的一些危险值(例如,HPUX上的env)。

它还限制了某些环境中shell扩展的范围。 (参见Linux上的man 1 env。)

答案 2 :(得分:0)

  1. 魔法属于可执行标志 (id)
  2. shebang:如果它与该版本一起存在,您可能会期望
    • chmod +x FILE -> /usr/bin/env cliVersion
    • php -v # 告诉你默认使用哪个版本:'cli' in a shell

或者使用例如:

/usr/bin/env php

在脚本的第一行没有 php8.0 /to/php/script.php 的情况下运行它。 (即使它留在那里也能工作,但如果对你很重要,请检查执行时的真实 php 版本)

“标准”?过去 10 年是 shebang,具体取决于您在系统上设置的默认版本:

debian 系统(debian、unbuntu、kubuntu...):/usr/bin/env 将指导您