PHP निकास स्थिति 255: इसका क्या मतलब है?


33

मैंने हाल ही में एक PHP 5.2.9 बाइनरी संकलित किया , और मैंने इसके साथ कुछ PHP स्क्रिप्ट निष्पादित करने का प्रयास किया। मैं समस्याओं के बिना कुछ स्क्रिप्ट निष्पादित कर सकता हूं, लेकिन उनमें से कोई एक त्रुटि या चेतावनी के साथ बाहर निकलते हुए इसके निष्पादन को रोक देता है। प्रक्रिया का लौटा हुआ स्थिति कोड 255 है।

मैंने मैनुअल में पढ़ा है कि ऐसी स्थिति 'आरक्षित' है। सवाल यह है: किस लिए?

मेरा मानना ​​है कि यह PHP निष्पादन योग्य में लापता निर्भरता के साथ कुछ करने के लिए मिला है, लेकिन मुझे यकीन नहीं हो सकता है।

किसी को भी पता है कि 255 का एक्जिट कोड क्या है?

PS PHP स्क्रिप्ट में कोई त्रुटि नहीं है, वे अन्य मशीनों पर ठीक चलाते हैं।

जवाबों:


34

२५५ एक त्रुटि है, मैं एक घातक त्रुटि होने पर उसी निकास कोड को पुन: उत्पन्न कर सकता था।

इसका मतलब है कि किसी तरह आपकी त्रुटि रिपोर्ट छिपी हुई है, इसके कुछ संभावित कारण हैं:

  • error_reporting परिभाषित नहीं है और php कोई त्रुटि रिपोर्ट नहीं करता है
  • एक @(त्रुटि दमन ऑपरेटर) त्रुटि के उत्पादन को छुपाता है
  • STDERR को कहीं और पुनर्निर्देशित किया गया है (php -f somefile.php 2> / dev / null, पुनर्निर्देशन हटा दें)
  • लापता निर्भरता के कारण यह अभी भी एक आंतरिक त्रुटि हो सकती है और एक घातक त्रुटि प्रोग्राम क्रैश के समान निकास कोड है।

1
विंडोज पर कुछ दुर्लभ मामलों में यह एक टूटी हुई php.iniफ़ाइल से संबंधित है (यानी फ़ाइल ने टूटे हुए चार्ट को अंदर कर दिया है)। यह पता लगाने के लिए मुझे 2 घंटे लगे। युक्ति: यदि आपकी स्क्रिप्ट (यानी composer.phar) साथ काम करती है php -n composer.phar, तो आपकी php.iniफ़ाइल संभवतः टूट गई है।
tftd

9

इसका अर्थ यह भी हो सकता है कि /etc/php5/cli/php.ini(डेबियन / उबंटू पर) या /etc/php.ini(RHEL / CentOS / etc पर) का display_errors = Offअर्थ है कि कमांड-लाइन स्क्रिप्ट से कोई भी त्रुटि या चेतावनी कहीं नहीं जाएगी, जब तक कि log_errors = On( error_logसेटिंग भी देखें )।

अपनी स्क्रिप्ट को एक आवरण स्क्रिप्ट के साथ चलाने का प्रयास करें जो उपयोग करता है php -d display_errors=on ...


3
मैं सिर्फ -d display_errors=onटिप के लिए धन्यवाद कहना चाहता हूं - मैं किसी के PHP ऐप के लिए एक कस्टम स्क्रिप्ट को डीबग करने की कोशिश कर रहा था जो अपने आप ही सभी अपवाद लॉगिंग को संभालने की कोशिश करता है, लेकिन अक्सर अपवादों को खाता है। उस झंडे का उपयोग करके मैं सीएलआई को प्रिंट करने के लिए अपवाद प्राप्त कर सकता हूं!
geerlingguy

मेरे मामले में, इसने मुझे दिखाया कि php स्क्रिप्ट ने अधिकतम निष्पादन समय पार कर लिया है। उत्कृष्ट टिप के लिए धन्यवाद!
मैक्स वर्नोन

0

यह PHP दबाए गए त्रुटि संदेशों (लाइन @ के साथ शुरू होता है) के कारण हो सकता है। मैंने रेखा को ढूंढ लिया

grep -r "@" src/ 

और फिर @ बाहर टिप्पणी की। इसके बाद मुझे वास्तविक त्रुटि मिली और इसे आसानी से ठीक करने में सक्षम था। मैंने बाद में यह भी देखा कि PHPStorm ने पहले ही त्रुटि का पता लगा लिया था, लेकिन मैंने इसे ठीक नहीं किया था।


0

इसका मतलब यह भी हो सकता है

  • /etc/php5/cli/php.ini (डेबियन / उबंटू पर)

  • /etc/php.ini (RHEL / CentOS / etc पर)

का गठन किया गया है

display_errors = Off 

जिसका अर्थ है कि कमांड-लाइन स्क्रिप्ट से कोई भी त्रुटि या चेतावनी कहीं नहीं जाएगी, जब तक कि

log_errors = On 

Error_log सेटिंग भी देखें।

अपनी स्क्रिप्ट को एक आवरण के साथ चलाने का प्रयास करें


0

मेरे मामले में कम xdebug.max_nesting_levelकीमत की वजह से xDebug मौत थी ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.