3

考虑一下:

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

我可以从 CLI 执行它,但是当我include在 CGI 运行的 PHP 脚本中执行它时,shebang 最终会出现在输出中。

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

这是否可能没有ob_*-wrapinclude来捕获 shebang(如果这甚至可能的话),还是将所有这些都塞进一个文件是愚蠢的?欢迎替代品/想法/最佳实践!

编辑:我想把脚本放在我的PATH,所以打电话我宁愿不叫它php file.php。请参阅我对@misplacedme 答案的评论

4

1 回答 1

1

这实际上很容易。
删除 shebang 并在运行脚本时将其运行为
php scriptname.php OR/path/to/php scriptname.php
而不是
./scriptname.php

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

于 2013-07-25T13:53:32.227 回答