【发布时间】:2013-07-25 11:02:43
【问题描述】:
考虑一下:
#!/usr/bin/php
<?php
class Foo {
static function bar () {
echo "Foo->bar\n";
}
}
if (PHP_SAPI === 'cli') {
Foo::bar();
}
?>
我可以从 CLI 执行此操作,但是当我在例如 CGI 运行的 PHP 脚本中 include 时,shebang 最终会出现在输出中。
我喜欢简单的脚本紧凑:我想我可以将class 部分放在一个单独的“lib”文件中,并为 CLI 使用一个简单的包装器。但我想把它全部放在一个地方,而不必担心包含路径等。
如果没有ob_*-包装include 来捕获shebang(如果这甚至可能的话),这是否可能,或者无论如何将所有这些都塞进一个文件是愚蠢的?欢迎使用替代方案/想法/最佳实践!
编辑:我想将脚本放在我的PATH 中,所以调用我宁愿不使用php file.php 调用它。请参阅我对@misplacedme 的回答的评论
【问题讨论】:
-
你可以在不需要 shebang 的情况下逃脱,只要确保你的调用完整路径到你的 php 二进制文件就可以了
-
@Dave - 这不是 misplacedme 的回答吗?对不起,如果我错了,我真的不明白“你的电话完整路径”......
-
我知道这是旧的,@kubi,你似乎并没有经常在这里闲逛,但如果你仍然看到这个,只是想知道:你最后得到了什么? AFAIK 即使在今天也无法解决这个问题(PHP 7.2)。它至少需要一个新的命令行选项(和/或 ini 设置)来告诉 PHP 不要输出 shebang,如果它存在的话。
-
因为这更多是为了方便和好奇而不是必要性,所以我放弃了这个问题,@Sz。而且我确实经常潜伏在这里。
标签: php