使用执行位运行CLI php脚本

使用执行位运行CLI php脚本,php,linux,command-line,Php,Linux,Command Line,这让我有点烦 我知道你能行 php foo.php 或 没有办法只启动一个设置了执行位的脚本吗 ./foo.php 鉴于以下情况: #!/usr/bin/php <?php exit('hello'); #/usr/bin/php 您给出的示例代码似乎还可以,对我很有用(不过我在结尾处添加了?>) 如果可以使用/usr/bin/php foo.php运行该文件,则会出现一些奇怪的情况。这只是一个猜测,但您的文本编辑器可能会在文件的开头留下一个BOM(字节顺序标记),以便#不是该文

这让我有点烦

我知道你能行

php foo.php

没有办法只启动一个设置了执行位的脚本吗

./foo.php
鉴于以下情况:

#!/usr/bin/php

<?php 
exit('hello');
#/usr/bin/php

您给出的示例代码似乎还可以,对我很有用(不过我在结尾处添加了
?>

如果可以使用
/usr/bin/php foo.php
运行该文件,则会出现一些奇怪的情况。这只是一个猜测,但您的文本编辑器可能会在文件的开头留下一个BOM(字节顺序标记),以便
#不是该文件的前两个字节。(您可以通过执行
hextump-cfoo.php | head

而不是
#找到答案/usr/bin/php
,使用
#/usr/bin/env php
是一个更好的解决方案。这将在
PATH
环境变量中查找PHP二进制文件。这是一个更加健壮的跨平台系统。例如,BSD在
/usr/local/bin/PHP
中安装PHP

此外,您需要确保这是第一行,并且脚本设置了可执行位,要为每个人设置它(通常是确定的),请使用:
chmod a+x script.php

另外,请确保已启用CLI SAPI。运行
php-v
top-verify,它应该显示如下内容:

[~]% php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:21:30)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
php(1)
手册页:

提示

您可以使用shebang行从中自动调用php 脚本。只有CLI版本的PHP才会忽略以下第一行 如下所示:

#!/bin/php
<?php
// your script
?>
#/bin/php
所以,shebang方法确实有效。如果我在Vim中将行结尾设置为“unix”以外的其他内容,则得到“:没有这样的文件或目录”。脚本中是否使用DOS行结尾

  • 在“#!”之前检查是否没有任何内容,就像UTF-8 BOM一样
  • 检查行的末尾是否没有任何内容,如最后一个LF(\n)之前的CR(\r)。如果在具有Windows行结束符(CR LF)的Windows中写入文件,CR就会出现,并且可能会被解释为解释器路径的一部分

  • 在/usr/bin/php中有php吗?@Subdigger-Yup。这对你有用吗?我不确定我是否试图强迫它做一些不该做的事。
    #!/bin/php
    <?php
    // your script
    ?>