使用执行位运行CLI php脚本

Gre*_*reg 2 php linux command-line

这一直困扰着我.

我知道你能做到

php foo.php
Run Code Online (Sandbox Code Playgroud)

要么

php -f foo.php
Run Code Online (Sandbox Code Playgroud)

有没有办法只启动执行位设置的脚本

./foo.php
Run Code Online (Sandbox Code Playgroud)

鉴于以下内容:

#!/usr/bin/php

<?php 
exit('hello');
Run Code Online (Sandbox Code Playgroud)

我得到"无法打开输入文件"或"错误的解释器:没有这样的文件或目录"取决于"bin/php"之后是否有空格.

Mar*_*oij 7

而不是#!/usr/bin/php,使用#!/usr/bin/env php是一个更好的解决方案.这将在PATH环境变量中查找PHP二进制文件.这是很多更强大的跨平台和.例如BSD安装PHP /usr/local/bin/php.

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

还要确保已启用CLI SAPI.运行php -v顶部验证,它应该显示如下:

[~]% 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
Run Code Online (Sandbox Code Playgroud)


Jac*_*zny 5

  1. 检查"#!"之前是否没有任何内容,就像UTF-8 BOM一样
  2. 检查行尾是否有任何内容,例如CR(\ r)到最后的LF(\n).如果您在Windows中使用Windows行结尾(CR LF)编写文件,则CR会转到那里,并且可能会被解释为解释器路径的一部分.