考虑一下:
#!/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的答案的评论
答案 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中)
除非你在脚本中使用完整路径,否则这将会搞乱
无论你做什么,你都必须在某个地方使用完整的路径。