从CLI生成可执行的PHP脚本并包含?

时间:2013-07-25 13:50:43

标签: php

考虑一下:

#!/usr/bin/php
<?php
class Foo {
        static function bar () {
                echo "Foo->bar\n";
        }
}
if (PHP_SAPI === 'cli') {
        Foo::bar();
}
?>

我可以从CLI执行此操作,但是当我在include中执行CGI运行的PHP脚本时,shebang会在输出中结束。

我喜欢简单的脚本 compact :我想我可以将class部分放在一个单独的“lib”文件中,并有一个简单的包装器供CLI使用。但是我想把它们放在一个地方,而不必担心包含路径等。

这可能没有ob_* - 包裹include以捕获shebang(如果这是可能的话),或者是否将所有这些都塞进一个文件中是否愚蠢?备选/思想/最佳实践欢迎!

编辑:我想把脚本放在我的PATH中,所以打电话给我而不是php file.php来调用它。请参阅我对@ misplacedme的答案的评论

1 个答案:

答案 0 :(得分:1)

这很容易。
删除shebang,当您运行脚本时,将其作为
运行     php scriptname.php/path/to/php scriptname.php
而不是     ./scriptname.php

运行php script.php将只查看当前目录或PATH中的任何目录。如果您必须以这种方式运行它,请添加它。 export PATH=$PATH:/path/to/php/script/folder(在bash中)
除非你在脚本中使用完整路径,否则这将会搞乱 无论你做什么,你都必须在某个地方使用完整的路径。