通常,当我看到要从命令行运行的PHP时,它会在文件的顶部有这样的行#!/usr/bin/env php
。。。
#!/usr/bin/env php
<?php
// code
?>
我想知道这是仅仅用于文件在Linux/Unix系统上运行时,还是在Windows上运行时需要?
shebang行是自动检测脚本类型所必需的。它实现了这种用途:
[pfisher ~]$ chmod +x run-me.php
[pfisher ~]$ ./run-me.php
如果将文件名作为参数传递给php解释器,则不需要该行,如下所示:
[pfisher ~]$ php run-me.php
编辑:替换"hashbang"与shebang。
不是,你可以直接使用
#!/path/to/php
通过env实用程序运行php(或其他任何东西)是一种较弱的安全措施。Dpending在平台上,将根据各种配置文件"修复"PATH、LIB和其他环境变量,并可能删除其中的一些危险值(例如HPUX上的env)。
这也是为了限制某些环境中shell扩展的范围。(请参阅Linux上的man 1 env)。
- 魔术属于可执行标志(
chmod +x FILE
) - shebang:如果它存在于你可能期望的那个版本中
/usr/bin/env cliVersion
->/usr/bin/env php
- php-v#告诉您的默认版本为:shell中的"cli"
交替使用,例如:
php8.0 /to/php/script.php
在脚本的第一行没有CCD_ 6的情况下运行它。(即使它停留在那里也能工作,但如果对你很重要,请检查执行时的真实php版本)
"标准";?在过去的10年里,/usr/bin/env
取决于你在系统上设置的默认版本:
debian系统(debian,unbundu,kubuntu…):#root: update-alternatives --config php
将指导您