2013-07-25 49 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

相關問題