尽管 #!/usr/bin/env php 我需要用 php 调用文件,为什么?

mar*_*kus 3 linux php shell

我正在尝试调用 shell 包装器进行 phing

phing
Run Code Online (Sandbox Code Playgroud)

...但它不能识别环境,我得到一个

-bash: phing: command not found
Run Code Online (Sandbox Code Playgroud)

...即使文件以:

#!/usr/bin/env php
Run Code Online (Sandbox Code Playgroud)

调用文件

php phing
Run Code Online (Sandbox Code Playgroud)

工作得很好。

该文件是可执行的,我从它自己的目录中调用它。

这怎么可能?

Aar*_*ley 6

  1. 它不是可执行的。
    chmod +x phing
  2. 它不在你的$PATH. 在没有绝对或相对路径的情况下调用二进制文件会告诉您的 shell 在您的文件中查找它$PATH并运行它找到的第一个。运行which phing以检查您的 shell 是否可以找到它。
  3. 使用绝对或相对路径运行二进制文件。
    ./phing(在同一目录中phing
    /path/to/phing

  • @markus几乎可以肯定是其中之一(或两者)。根据您对问题的评论,您已经确定 `/usr/bin/env php` 有效 - 这将成为唯一的可能性。如果您认为不是,请提供您的理由。 (2认同)