2011-03-10 96 views
0

我有一個PHP CLI腳本(http://codepad.org/w6iyLLdv),它固執地返回退出代碼11,儘管exit(0)和缺乏任何明顯的問題。退出狀態11:這是什麼意思?

Advanced Bash-Scripting Guide: Appendix E. Exit Codes With Special Meanings沒有列出關於11的任何特殊內容,Google一般也沒有發現任何關於它的內容,也沒有與PHP特別相關 - 除了可能的Are there any standard exit status codes in Linux?

當然我可以在我的調用代碼中檢查0 11的退出狀態,但這很髒。

+0

http://stackoverflow.com/questions/5255218/why-is-it-returning-exit-status-11 – Mikhail 2011-03-10 03:53:07

+2

http://stackoverflow.com/questions/5255218/why-is-it-returning重複-exit-status-11 - 對不起,溝通不暢! (米哈伊爾打敗了我。) – Grault 2011-03-10 03:55:41

回答

1

我終於想到要檢查Apache的error.log中和11個狀態伴隨着這樣的:PHP警告:模塊「imagick」已裝入未知在線0

我發現這裏的解決方案:http://www.somacon.com/p520.php顯然我不小心把額外的< < extension =「imagick.so」>>在php.ini中換行。刪除它允許CLI腳本返回狀態0.

注意:我發佈這個後,我開始從imagick得到一個PHP-Warning關於無權創建〜/ .gnome2目錄和11狀態。因此,在應用此修復程序後看到0狀態可能是一種僥倖。

0

退出代碼是11還是信號 11?如果是後者,它會與SIGSEGV崩潰。

否則,請查看您是否可以確定它正在退出哪條線。例如,在第10行之後插入exit(0);,如果退出時使用0而不是11,則將退出(0)向下移動一點。這至少會給我們更多的工作。

+0

它只是放在'exec'的第三個參數中的數字。我的理解是,這是退出狀態。通過使用你的建議,我能夠確認它不會退出,直到代碼中退出(0)。在if-block之前放置一個出口阻止了該狀態。 – Grault 2011-03-10 06:08:13

+0

更正:顯然,我在調試中犯了一個錯誤;對flattenImages的調用是第一件事,如果exit(0)出現在它之前,那麼11的狀態就會被阻止......所以這是一個Image Magick問題。 – Grault 2011-03-11 21:25:12