2013-07-25 23 views
2

考虑一下:从CLI中可执行一个PHP脚本并且可以包含?

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

我可以从CLI执行此,但是当我include它,比如说,一个CGI运行PHP脚本,该家当输出结束。

我喜欢简单的脚本紧凑:我想我可以把class部分在一个单独的“LIB” -file并有CLI使用一个简单的包装。但我想保留所有在一个地方,而不必担心包括路径等。

这可能没有ob_* - 包装include捕获shebang(如果这是可能的话),或者它是愚蠢的把所有这些都塞进一个文件呢?替代品/想法/最佳实践欢迎!

编辑:我想把脚本放在我的PATH,所以打电话我宁可不要拨打电话php file.php。看到我的评论@ misplacedme的回答

+0

你可以脱身而不需要shebang只要确保你的通话完整路径到你的php二进制文件就可以了 – Dave

+0

@Dave - 这不是错误的地方吗?对不起,如果我错了,我真的不明白“你的通话完整路径”... – kubi

+0

几乎是 – Dave

回答

1

这实际上很容易。
取出家当,当你运行该脚本,运行它
php scriptname.php OR /path/to/php scriptname.php
而不是
./scriptname.php

运行php script.php看起来只在当前目录或PATH中的任何目录。如果您绝对必须这样运行,请添加它。 export PATH=$PATH:/path/to/php/script/folder(在bash中)
除非您在脚本中使用完整路径,否则这将会导致混乱。
无论你做什么,你都必须在某处使用完整路径。

+0

啊,我没有提到我想在我的'PATH'中有脚本。就像'cat somefile | php /usr/local/share/foo.bar.php | sed ...'不好玩。 – kubi

+0

通常,php被包含在你的路径中,或者你可以添加它。 既不适用于您? –

+0

php肯定是的,但我的脚本不是。 'php file'不只是在工作目录中查找'file'吗? – kubi

相关问题