如何添加shebang#!在Linux上使用php脚本?

时间:2014-02-12 15:10:49

标签: php linux shebang

我在添加shebang#时遇到了一些问题!在RedHat linux上使用我的PHP脚本。我添加了shebang的一小段测试代码(我也尝试了不同的变体),但每次尝试运行脚本时都会收到以下错误消息。

错误消息:

-bash: script.php: command not found

测试脚本:

#!/bin/env php    
<?php echo "test"; ?>

Shebang#!变体形式:

#!/usr/bin/php
#!/usr/bin/env php

5 个答案:

答案 0 :(得分:34)

它应该(对于大多数系统而言)为#!/usr/bin/env php,但您的错误与此无关。

-bash: script.php: command not found

它表示找不到 script.php

如果问题是shebang线,则错误会出现如下情况:

bash: script.php: /usr/env: bad interpreter: No such file or directory

据推测,您输入的是script.php,该文件不在$PATH的目录中,或者不可执行。

  1. 使其可执行:chmod +x script.php
  2. 键入路径,而不仅仅是文件名,如果它在当前目录中,则输入:./script.php
  3. 您可以将文件移动/复制/符号链接到$PATHmodify the $PATH中列出的某个位置,而不是2,以包含包含该脚本的目录。

答案 1 :(得分:13)

如果脚本不在/usr/local/bin中且可执行,则必须使用php为您的脚本调用前缀:

php myscrip.php

对于shebangs,这是我使用的:

像这样:

#!/usr/bin/php

或者这个:

#!/usr/bin/env php

答案 2 :(得分:2)

在回复@NVRM关于仅一次使用-d的评论时,这是不正确的。

chmod +x script开头

#!/usr/bin/php
<?php
phpinfo();

并运行script | grep -E 'memory_limit|error_reporting',您会看到

error_reporting => no value => no value
memory_limit => 128M => 128M

现在添加一些-d条目,以便您拥有

#!/usr/bin/php -d memory_limit=2G -d error_reporting=-1
<?php
phpinfo();

并重新运行script | grep -E 'memory_limit|error_reporting',现在您将看到

error_reporting => -1 => -1
memory_limit => 2G => 2G

因此,您可以设置多个选项。

实际上,您在此处使用的是整个命令行。因此,您可以加载扩展,使用其他配置等,您可以在命令行执行的所有操作。

答案 3 :(得分:0)

在这里留一些小笔记:


要使用位于同一文件夹内的php二进制文件。

例如,从/usr/bin复制的php7.2可执行文件在hello脚本的同一路径中。

#!./php7.2
<?php

echo "Hello!"; 

要运行它:

./hello

行为与以下行为相同:

./php7.2 hello

这具有可移植性,但要提防系统架构,php二进制文件可能与目标平台不匹配。


通过哈希爆炸设置允许的内存:

我们可以在hashbang行中设置一个INI条目

#!/usr/bin/php -d memory_limit=2048M
<?php
phpinfo();
exit;

然后使用phpinfo()查看php是否理解:

./myphpProg | grep memory

正确的shell输出应包含:

memory_limit => 2048M => 2048M

执行上述操作与此命令行类似:

php -d memory_limit=2048M myphpProg.**php**

这就是为什么我们只能在hashbangs中设置一个ini值的原因,因为php一次仅接受一个 -d 参数。

答案 4 :(得分:0)

在Linux中为PHP找到可调用的shebang, 不要记住它,学习如何使用


which php

输出


zeus@pop-os:~$ which php
/usr/bin/php



那么shebang一定是

#!/usr/bin/php