2014-10-10 67 views
2

我卡上一個PHP CLI問題天:PHP CLI只適用於「-n」

我沒有ouptut,只是一個空行,光標等待指令,當我運行:

php -r "echo 1;" 

但是當我運行這條線與-n(無php.ini文件將被使用),一切正常:

php -nr "echo 1;" 

我真正的問題是,我composer快捷方式(如/ bin /作曲家)沒有按」工作了,我不得不寫現在每一次都是php -n /bin/composer

我在Debian Wheezy上工作,我的PHP版本是最新的(5.4.4-14)。

我重新安裝了php很多次都沒有成功。請,你能幫我嗎?

+0

您是否嘗試過檢查與PHP相關的錯誤的系統日誌?你的一個php.ini文件似乎有問題。如果系統日誌沒有顯示任何內容,則可以查看註釋行的ini文件,直到找到解決方案。 – 2014-10-10 23:25:03

+0

@LoganBailey事實上,我檢查了PHP錯誤日誌,沒有記錄錯誤(除非我故意觸發一個奇怪的原因,因爲這意味着我的PHP行很好地解釋)。我還從另一臺服務器複製了另一個PHP ini文件,該文件與完全相同的PHP版本正常工作,但沒有任何更改。 – 2014-10-11 09:12:47

+0

運行'php -r「echo 1後退出的代碼是什麼;」'? (之後運行'echo $?')。 – 2014-10-11 10:27:36

回答

3

重新安裝php5-cliphp5-common封裝以及你需要libssh2-php你上面提到任何其他依賴。

sudo apt-get install --reinstall php5-common php5-cli 
0

1作曲

請嘗試重新安裝作曲到你的/ bin文件夾。

全球安裝作曲家爲/ bin /作曲家

curl -sS https://getcomposer.org/installer | php 

mv composer.phar /bin/composer 

如果此舉失敗,使用sudo的。

運行作曲

然後運行/bin/composer,而不是php composer.pharphp -n /bin/composer

如果您不能執行,請參閱chmod +x /bin/composer請參閱the documentation for more information


2. PHP CLI

php -r "echo 1;"應該返回 「1」,在新線。

如果沒有發生這種情況,那麼您可能需要查看CLI的PHP.ini文件。

當某些東西開始適用-n(沒有使用ini +使用默認設置)時,這是一個指示器,表明配置已混亂。

獲取加載的ini的路徑:php --iniphp -i | grep 'Configuration File'

在Debian上,位置應該是/etc/php5/cli/php.ini

然後查找可能影響輸出的ini指令,如output_buffering與implicit_flush結合使用。 CLI上的output_buffering默認關閉。如果output_buffering意外打開,而implicit_flush關閉,並且您沒有手動刷新緩衝區,則不會看到任何輸出。

確保錯誤處理指令和日誌記錄已打開:display_errors,display_startup_errors,log_errors

+0

謝謝Jens-André,但我不認爲我的問題與Composer相關,因爲我的php命令行也受到影響。如果我運行'php -n/bin/composer',Composer就像一個魅力。我也有同樣的問題運行symfony應用程序/控制檯。不過,我很感謝你詳細說明了Composer的安裝過程,以便在全球範圍內使用它。 – 2014-10-11 09:18:14

+0

我只是想指出,因爲你寫道「我真正的問題是我的作曲家的捷徑..」。您不需要使用「php -n/bin/composer」,因爲phar文件是可執行的。使用作曲家的命令是「/ bin/composer」。我在「PHP -r」與「PHP -nr」問題中附加了我的答案。 – 2014-10-11 10:07:44

+0

沒問題,我知道composer.phar是可執行的,因爲它的shebang行。我的問題是,它執行時沒有「-n」參數,所以它沒有做任何事情,因爲我的PHP cli問題。我可能錯過了,當我說我的問題來自作曲家,抱歉。我說過,因爲這個問題在我使用作曲家時特別煩人。 – 2014-10-11 10:20:47