使用执行位运行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
?>