सवाल मेरा क्रॉन्टाब क्यों काम नहीं कर रहा है, और मैं इसका निवारण कैसे कर सकता हूं?


यह है एक कैननिकल प्रश्न क्रॉन और क्रोंटैब का उपयोग करने के बारे में।

आपको यहां निर्देशित किया गया है क्योंकि समुदाय पूरी तरह से सुनिश्चित है कि आपके प्रश्न का उत्तर नीचे पाया जा सकता है। यदि आपके प्रश्न का उत्तर नीचे नहीं दिया गया है तो उत्तर आपको जानकारी इकट्ठा करने में मदद करेंगे जो समुदाय की सहायता करने में आपकी सहायता करेगा। यह जानकारी आपके मूल प्रश्न में संपादित की जानी चाहिए।

के लिए जवाब 'मेरा क्रॉन्टाब क्यों काम नहीं कर रहा है, और मैं इसका निवारण कैसे कर सकता हूं?'नीचे देखा जा सकता है। यह संबोधित करता है cron crontab हाइलाइट के साथ प्रणाली।


193
2017-11-17 04:51


मूल


यह एक विशाल डुप्ली है क्रॉन्टाब क्यों काम नहीं करता है AskUbuntu पर। - Dan Dascalescu


जवाब:


अपने सभी crontab संबंधित समस्याओं / समस्याओं (लिनक्स) को कैसे ठीक करें


यह है एक समुदाय विकी, अगर आपको इस उत्तर के साथ कुछ भी गलत लगता है या अतिरिक्त जानकारी है तो कृपया इसे संपादित करें।


सबसे पहले, मूल शब्दावली:

  • क्रॉन (8) वह नियमन है जो निर्धारित आदेशों को निष्पादित करता है।
  • crontab (1) यह प्रोग्राम उपयोगकर्ता क्रोंटैब (5) फ़ाइलों को संशोधित करने के लिए प्रयोग किया जाता है।
  • crontab (5) प्रति उपयोगकर्ता फ़ाइल है जिसमें क्रॉन (8) के लिए निर्देश शामिल हैं।

अगला, क्रॉन के बारे में शिक्षा:

सिस्टम पर प्रत्येक उपयोगकर्ता की अपनी क्रॉन्टाब फ़ाइल हो सकती है। रूट और उपयोगकर्ता क्रोंटैब फाइलों का स्थान सिस्टम निर्भर है लेकिन वे आम तौर पर नीचे हैं /var/spool/cron

एक प्रणाली चौड़ा है /etc/crontab फ़ाइल, द /etc/cron.d निर्देशिका में क्रोंटैब टुकड़े हो सकते हैं जिन्हें क्रॉन द्वारा भी पढ़ा और क्रियान्वित किया जाता है। कुछ लिनक्स वितरण (उदाहरण के लिए, रेड हैट) भी है /etc/cron.{hourly,daily,weekly,monthly} जो निर्देशिकाएं हैं, जिनके अंदर रूट विशेषाधिकार के साथ हर घंटे / दिन / सप्ताह / महीने निष्पादित किया जाएगा।

रूट हमेशा crontab कमांड का उपयोग कर सकते हैं; नियमित उपयोगकर्ताओं को पहुंच प्रदान की जा सकती है या नहीं भी। जब आप कमांड के साथ crontab फ़ाइल संपादित करते हैं crontab -e और इसे सेव करें, क्रॉन्ड इसे मूल वैधता के लिए जांचता है लेकिन यह गारंटी नहीं देता है कि आपकी crontab फ़ाइल सही ढंग से बनाई गई है। एक फाइल कहा जाता है cron.deny जो निर्दिष्ट करेगा कि कौन से उपयोगकर्ता क्रॉन का उपयोग नहीं कर सकते हैं। cron.deny फ़ाइल स्थान सिस्टम निर्भर है और हटाया जा सकता है जो सभी उपयोगकर्ताओं को क्रॉन का उपयोग करने की अनुमति देगा।

यदि कंप्यूटर चालू नहीं है या क्रॉन्ड डिमन चल रहा नहीं है, और चलाने के लिए आदेश के लिए दिनांक / समय बीत चुका है, तो क्रॉन्ड पकड़ नहीं पाएगा और पिछले प्रश्नों को चलाएगा।

crontab विवरण, एक आदेश बनाने के लिए कैसे:

एक crontab कमांड एक लाइन द्वारा प्रतिनिधित्व किया जाता है। आप उपयोग नहीं कर सकते \ एकाधिक लाइनों पर एक कमांड का विस्तार करने के लिए। हैश (#) चिह्न एक टिप्पणी का प्रतिनिधित्व करता है जिसका मतलब है कि उस रेखा पर कुछ भी क्रॉन द्वारा अनदेखा किया जाता है। अग्रणी सफेद जगह और खाली रेखाओं को नजरअंदाज कर दिया जाता है।

प्रतिशत का उपयोग करते समय बहुत सावधान रहें (%) अपने आदेश में साइन इन करें। जब तक वे भाग नहीं जाते हैं \% वे पहले गैर-भागने के बाद न्यूलाइन और सबकुछ में परिवर्तित हो जाते हैं % stdin पर आपके आदेश को पारित किया जाता है।

Crontab फ़ाइलों के लिए दो प्रारूप हैं:

  • उपयोगकर्ता crontabs

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  *   command to be executed
    
  • प्रणाली विस्तृत /etc/crontab तथा /etc/cron.d टुकड़े टुकड़े

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

ध्यान दें कि बाद वाले को उपयोगकर्ता नाम की आवश्यकता है। आदेश नामित उपयोगकर्ता के रूप में चलाया जाएगा।

लाइन के पहले 5 फ़ील्ड समय (ओं) का प्रतिनिधित्व करते हैं जब कमांड चलाया जाना चाहिए। आप समय विनिर्देशन में संख्याओं या लागू दिन / महीने के नामों का उपयोग कर सकते हैं।

  • फ़ील्ड रिक्त स्थान या टैब से अलग होते हैं।
  • एक अल्पविराम (,) का उपयोग एक सूची निर्दिष्ट करने के लिए किया जाता है जैसे 1,4,6,8 जिसका अर्थ है 1,4,6,8 पर।
  • रेंज को एक डैश के साथ निर्दिष्ट किया जाता है (-) और सूचियों के साथ जोड़ा जा सकता है उदा। 1-3, 9-12 जिसका मतलब है 1 और 3 के बीच 9 और 12 के बीच।
  • / चरित्र का उपयोग एक चरण उदाहरण के लिए किया जा सकता है उदा। 2/5 जिसका मतलब 2 से शुरू होता है तो हर 5 (2,7,12,17,22 ...)। वे अंत से पीछे लपेट नहीं करते हैं।
  • एक तारांकन (*) एक क्षेत्र में उस क्षेत्र की पूरी श्रृंखला को इंगित करता है (उदा। 0-59 मिनट के मैदान के लिए)।
  • रेंज और चरणों को संयुक्त किया जा सकता है उदा। */2 प्रासंगिक क्षेत्र के लिए कम से कम शुरू करने का संकेत देता है तो प्रत्येक 2 उदा। मिनटों के लिए 0 (0,2 ... 58), महीनों के लिए 1 (1,3 ... 11) आदि

क्रॉन कमांड डीबगिंग

खतदेखो! डिफ़ॉल्ट क्रॉन द्वारा कमांड से किसी भी आउटपुट को उपयोगकर्ता को मेल करेगा, यह कमांड चला रहा है। यदि कोई आउटपुट नहीं है तो कोई मेल नहीं होगा। यदि आप क्रॉन को किसी दूसरे खाते में मेल भेजने के लिए चाहते हैं तो आप crontab फ़ाइल में MAILTO पर्यावरण चर सेट कर सकते हैं उदा।

MAILTO=user@somehost.tld
1 2 * * * /path/to/your/command

खुद को आउटपुट कैप्चर करें

1 2 * * *  /path/to/your/command &>/tmp/mycommand.log

जो stdout और stderr को /tmp/mycommand.log पर कैप्चर करता है

लॉग को देखो; क्रॉन syslog के माध्यम से अपने कार्यों को लॉग करता है, जो (आपके सेटअप के आधार पर) अक्सर जाता है /var/log/cron या /var/log/syslog

यदि आवश्यक हो तो आप क्रॉन स्टेटमेंट्स को उदा।

grep CRON /var/log/syslog 

अब जब हम क्रॉन की मूल बातें खत्म कर चुके हैं, जहां फाइलें हैं और उनका उपयोग कैसे करें, तो कुछ सामान्य समस्याओं को देखें।

जांचें कि क्रॉन चल रहा है

यदि क्रॉन नहीं चल रहा है तो आपके आदेश निर्धारित नहीं किए जाएंगे ...

ps -ef | grep cron | grep -v grep

आपको कुछ पसंद करना चाहिए

root    1224   1  0 Nov16 ?    00:00:03 cron

या

root    2018   1  0 Nov14 ?    00:00:06 crond

अगर इसे पुनरारंभ नहीं करते हैं

/sbin/service cron start

या

/sbin/service crond start

अन्य विधियां हो सकती हैं; अपने distro प्रदान करता है का उपयोग करें।

क्रॉन एक प्रतिबंधित वातावरण में आपका आदेश चलाता है।

कौन से पर्यावरण चर उपलब्ध हैं, बहुत सीमित होने की संभावना है। आमतौर पर, आपको केवल कुछ चर परिभाषित किए जाएंगे, जैसे कि $LOGNAME, $HOME, तथा $PATH

विशेष ध्यान में से है PATH तक ही सीमित है /bin:/usr/bin"मेरी क्रॉन लिपि काम नहीं करती" का विशाल बहुमत इस प्रतिबंधक पथ के कारण समस्याएं हैं। यदि आपका आदेश एक अलग स्थान पर है तो आप इसे दो तरीकों से हल कर सकते हैं:

  1. अपने आदेश के लिए पूरा पथ प्रदान करें।

    1 2 * * * /path/to/your/command
    
  2. Crontab फ़ाइल में एक उपयुक्त पाथ प्रदान करें

    PATH=/usr:/usr/bin:/path/to/something/else
    1 2 * * * command 
    

यदि आपके आदेश को अन्य पर्यावरण चर की आवश्यकता है तो आप उन्हें crontab फ़ाइल में भी परिभाषित कर सकते हैं।

cron cwd == $ HOME के ​​साथ आपका आदेश चलाता है

भले ही आपके द्वारा निष्पादित प्रोग्राम फ़ाइल सिस्टम पर रहता है, प्रोग्राम की वर्तमान कार्यशील निर्देशिका जब क्रॉन चलता है तो यह होगा उपयोगकर्ता की होम निर्देशिका। यदि आप अपने प्रोग्राम में फ़ाइलों तक पहुंचते हैं, तो आप इसे सापेक्ष पथ का उपयोग करते हैं, या (अधिमानतः) हर जगह पूरी तरह से योग्यता वाले पथ का उपयोग करते हैं, और हर किसी को पूरी तरह से भ्रम को बचाने के लिए इसे ध्यान में रखना होगा।

मेरे crontab में अंतिम आदेश नहीं चला है

क्रोन आम तौर पर आवश्यक है कि कमांड को एक नई लाइन के साथ समाप्त कर दिया जाए। अपने crontab संपादित करें; उस पंक्ति के अंत में जाएं जिसमें अंतिम कमांड है और एक नई लाइन डालें (एंटर दबाएं)।

क्रोंटैब प्रारूप की जांच करें

आप / etc / crontab के लिए उपयोगकर्ता crontab स्वरूपित crontab या /etc/cron.d में खंडों का उपयोग नहीं कर सकते हैं और इसके विपरीत। एक उपयोगकर्ता स्वरूपित crontab में पंक्ति की 6 वें स्थिति में उपयोगकर्ता नाम शामिल नहीं है, जबकि एक सिस्टम स्वरूपित crontab उपयोगकर्ता नाम शामिल है और उस उपयोगकर्ता के रूप में आदेश चलाता है।

मैंने /etc/cron में एक फ़ाइल डाली। {Hhourly, दैनिक ,weekly, मासिक रूप से} और यह नहीं चल रहा है

  • जांचें कि फ़ाइल नाम में कोई एक्सटेंशन नहीं है रन-भागों
  • सुनिश्चित करें कि फ़ाइल निष्पादित अनुमतियां है।
  • सिस्टम को बताएं कि आपकी स्क्रिप्ट निष्पादित करते समय क्या उपयोग करना है (उदाहरण के लिए #!/bin/sh शीर्ष पर)

क्रॉन तिथि संबंधित बग

यदि आपकी तिथि हाल ही में किसी उपयोगकर्ता या सिस्टम अपडेट, टाइमज़ोन या अन्य द्वारा बदली गई है, तो क्रोंटैब अनियमित रूप से व्यवहार करना शुरू कर देगा और विचित्र बग प्रदर्शित करेगा, कभी-कभी काम कर रहा है, कभी-कभी नहीं। यह क्रॉन्टाब का प्रयास है कि "जो भी आप चाहते हैं" करने का प्रयास करें, जब समय नीचे से बदल जाए। घंटे बदल जाने के बाद "मिनट" क्षेत्र अप्रभावी हो जाएगा। इस परिदृश्य में, केवल तारांकन स्वीकार किए जाएंगे। क्रॉन को पुनरारंभ करें और इंटरनेट से कनेक्ट किए बिना इसे फिर से प्रयास करें (इसलिए तिथि को सर्वरों में से किसी एक को रीसेट करने का मौका नहीं है)।

प्रतिशत संकेत, फिर से

प्रतिशत संकेतों के बारे में सलाह पर जोर देने के लिए, यहां एक उदाहरण है कि उनके साथ क्रॉन क्या करता है:

# cron entry
* * * * * cat >$HOME/cron.out%foo%bar%baz

3 लाइनों वाली ~ / cron.out फ़ाइल बनायेगी

foo
bar
baz

इसका उपयोग करते समय यह विशेष रूप से घुसपैठ कर रहा है date आदेश। प्रतिशत संकेतों से बचने के लिए सुनिश्चित हो

* * * * * /path/to/command --day "$(date "+\%Y\%m\%d")"

273
2017-10-09 15:29



हो सकता है कि 'प्रतिबंधित एनवी' खंड में भी उल्लेख करना चाहें कि LD_LIBRARY_PATH को आपके पुस्तकालय कार्य साझा पुस्तकालयों को ढूंढने में असमर्थ होने के कारण विफल होने पर भी कोई अतिरिक्त निर्देशिका सेट करने की आवश्यकता हो सकती है। - DavidJ
ध्यान दें कि आप इस तरह कुछ भी लिख सकते हैं: 35 1,5-23 / 2 * * * 35,1,5,7,9 के बजाय do_something, .. * * * इसके अतिरिक्त crontab.guru आपके द्वारा मानव भाषा में किए गए प्रविष्टियों का अनुवाद करता है। - Dennis Nolte
आउटपुट कैप्चर मेरे लिए काम नहीं करता है, शेल खोल के कारण हो सकता है। मुझे लगता है कि यह अधिक पोर्टेबल है: ... /path/to/your/command >/tmp/mycommand.log 2>&1 - chus
यह मेरे लिए काम किया: sudo apt-get install postfix - jmunsch
क्रॉन नौकरी भी इस बात पर निर्भर करता है कि फ़ाइल कितनी भारी है? क्योंकि मैंने क्रॉन के साथ अजगर में सरल हैलो वर्ल्ड चलाया, यह काम किया। लेकिन मेरा दूसरा कोड थोड़ा भारी था और आम तौर पर दौड़ता है लेकिन क्रॉन के साथ यह फ़ाइल में कोई आउटपुट नहीं दे रहा है। - Devendra Bhat


यदि आपके cronjobs काम करना बंद कर देते हैं, तो जांचें कि आपका पासवर्ड समाप्त हो गया है। चूंकि एक बार यह है, सभी क्रॉन नौकरियां रुकती हैं।
इसमें संदेश होंगे /var/log/messages नीचे दिए गए एक जैसा है जो उपयोगकर्ता को प्रमाणित करने के साथ समस्याएं दिखाता है:

(username) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required)


18
2018-02-04 20:29



बस इसे भी मिला (त्रुटि संदेश फ़ाइल / var / log / syslog मेरे लिए)। मेरे मामले में एक डिजिटल साउथ बॉक्स, जो कि समय पर, वे रूट पासवर्ड (वैकल्पिक रूप से) को दूसरे पर रीसेट करते हैं, और स्पष्ट रूप से जब तक आप वहां नहीं जाते और इसे बदलते हैं, तो सभी क्रॉन नौकरियां नहीं चलती हैं। ओह। ठीक कुछ ऐसा है sudo -u root passwd - rogerdpack


डेबियन लिनक्स और इसके व्युत्पन्न (उबंटू, मिंट, इत्यादि) में कुछ विशिष्टताएं हैं जो आपके क्रॉन नौकरियों को निष्पादित करने से रोक सकती हैं; विशेष रूप से, में फाइलें /etc/cron.d, /etc/cron.{hourly,daily,weekly,monthly} जरूर :

  • रूट के स्वामित्व में हो
  • केवल रूट द्वारा लिखने योग्य हो
  • समूह या अन्य उपयोगकर्ताओं द्वारा लिखने योग्य नहीं है
  • एक नाम है बिना किसी बिंदु के '।' या कोई अन्य विशेष चरित्र लेकिन '-' और '_'।

आखिरी बार नियमित रूप से असुरक्षित उपयोगकर्ताओं को दर्द होता है; विशेष रूप से नामित इन फ़ोल्डर्स में से किसी एक स्क्रिप्ट में whatever.sh, mycron.py, testfile.pl, आदि होगा नहीं कभी निष्पादित किया जाना चाहिए।

मेरे अनुभव में, यह विशेष बिंदु डेबियन और डेरिवेटिव्स पर गैर निष्पादित क्रोनबॉज के लिए अब तक का सबसे लगातार कारण रहा है।

देख man cron यदि आवश्यक हो तो अधिक जानकारी के लिए।


15
2017-11-17 14:37





असामान्य और अनियमित कार्यक्रम

क्रॉन सभी चीजों को एक बहुत ही बुनियादी शेड्यूलर माना जाता है और सिंटैक्स आसानी से व्यवस्थापक को थोड़ा असामान्य शेड्यूल बनाने की अनुमति नहीं देता है।

निम्नलिखित नौकरी पर विचार करें जो आमतौर पर समझाया जाएगा "रन command हर 5 मिनट ":

*/5 * * * * /path/to/your/command

बनाम:

*/7 * * * * /path/to/your/command

कौन कौन से नहीं करता हमेशा रन command हर 7 मिनट

याद रखें कि / चरित्र का उपयोग एक चरण को पेश करने के लिए किया जा सकता है लेकिन वह चरण श्रृंखला के अंत से बाहर नहीं लपेटते हैं उदा। */7 जो मिनटों से हर 7 वें मिनट से मेल खाता है 0-59  यानी 0,7,14,21,28,35,42,49,56 लेकिन एक घंटे और अगले के बीच वहां होगा बैचों के बीच केवल 4 मिनट, बाद 00:56 एक नई श्रृंखला शुरू होती है 01:00, 01:07 आदि (और बैच नहीं चलेंगे 01:03 , 01:10 , 01:17 आदि।)।


इसके बजाय क्या करना है?

कई बैचों बनाएँ

एक क्रॉन नौकरी की बजाय, वांछित अनुसूची में परिणाम मिलाकर कई बैच बनाएं।

उदाहरण के लिए प्रत्येक 40 मिनट (00:00, 00:40, 01:20, 02:00 इत्यादि) बैच चलाने के लिए) दो बैचों का निर्माण करें, जो कि घंटों में दो बार चलता है और दूसरा जो केवल अजीब घंटे चलता है:

# The following lines create a batch that runs every 40 minutes i.e.

# runs on   0:00, 0:40,        02:00, 02:40         04:00 etc to 22:40
0,40 */2 * * * /path/to/your/command

# runs on               01:20,               03:20,       etc to 23:20
20 1/2 * * * /path/to/your/command

# Combined: 0:00, 0:40, 01:20, 02:00, 02:40, 03:20, 04:00 etc.

अपने बैचों को कम बार चलाएं 

प्रत्येक बैच में अपने बैच को चलाने के बजाय, जो कई बैचों में टूटने के लिए एक कठिन शेड्यूल है, बस इसे हर 10 मिनट में चलाएं।

अपने बैचों को अधिक बार चलाएं 

कई विषम कार्यक्रम विकसित होते हैं क्योंकि बैच रनटाइम बढ़ता / उतार-चढ़ाव करता है और फिर बैच को अतिरिक्त सुरक्षा मार्जिन के साथ निर्धारित किया जाता है ताकि समान बैच के बाद के रनों को ओवरलैपिंग और एक साथ चलने से रोका जा सके।

इसके बजाए, अलग-अलग सोचें और एक क्रोनबॉज बनाएं जो पिछली रन अभी तक समाप्त नहीं हुई है, लेकिन जो अन्यथा चलती है, पर कृपापूर्वक असफल हो जाएगी। यह देखो क्यू एंड ए:

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job --minutely

इसी तरह के नोट पर, आप बैच के आखिरी सफल रन के टाइमस्टैम्प को रिकॉर्ड कर सकते हैं और बैच चेक की शुरुआत में बैच के बीच वांछित अंतराल पहले ही पास हो चुका है और निष्पादित हो सकता है और अन्यथा शानदार तरीके से बाहर निकल सकता है।

बाश में seven-minute-job कुछ ऐसा दिखता है जैसे:

#!/bin/bash
# seven-minute-job
# This batch will only run when 420 seconds (7 min) have passed
# since the file /tmp/lastrun was either created or updated

if [ ! -f /tmp/lastrun ] ; then
    touch /tmp/lastrun
fi

if [ $(( $(date +%s) - $(date -r /tmp/lastrun +%s) )) -lt 420 ] ; then
    echo "The minimum interval of 7 minutes between successive batches hasn't passed yet."
    exit
fi

echo "Start running your batch"

date > /tmp/lastrun

जो आप हर मिनट चलाने के लिए सुरक्षित रूप से (प्रयास) कर सकते हैं:

* * * * * /path/to/your/seven-minute-job

क्रॉन का प्रयोग न करें

यदि आपकी ज़रूरतें जटिल हैं तो आप जटिल कार्यक्रमों (एकाधिक सर्वरों पर वितरित) चलाने के लिए डिज़ाइन किए गए एक और उन्नत उत्पाद का उपयोग करने पर विचार कर सकते हैं और यह ट्रिगर्स, नौकरी निर्भरता, त्रुटि प्रबंधन, रीट्री निगरानी आदि का समर्थन करता है। उद्योग शब्दकोष "उद्यम" होगा नौकरी शेड्यूलिंग और / या "वर्कलोड स्वचालन"।


10
2017-10-23 04:45





पीएचपी विशेष

यदि आपके पास कुछ क्रॉन नौकरी है जैसे:

php /bla/bla/something.php >> /var/logs/somelog-for-stdout.log

और त्रुटियों की अपेक्षा होने पर, वे आपको भेजे जाएंगे, लेकिन वे नहीं - इसे जांचें।

डिफ़ॉल्ट रूप से PHP STDOUT में त्रुटियां नहीं भेज रहा है। @देख https://bugs.php.net/bug.php?id=22839

इसे ठीक करने के लिए, क्ली की php.ini में या अपनी लाइन में जोड़ें (या PHP के लिए अपने बैश रैपर में):

  • --define display_startup_errors = 1
  • --define display_errors = 'stderr'

पहली सेटिंग आपको 'मेमोरी ओप्स' और 2 जैसी मोटाई करने की अनुमति देगी - उन्हें सभी को STDERR पर रीडायरेक्ट करने के लिए। केवल आप अच्छी तरह से सोने के बाद ही सभी लॉग इन करने के बजाय आपके रूट के मेल पर भेजे जाएंगे।


8



2007 में उस त्रुटि रिपोर्ट को PHP 5.2+ शाखाओं में जोड़े जाने वाले पैच की स्थिति के साथ बंद कर दिया गया था। क्या आपको यकीन है कि इसकी आवश्यकता है? मैंने अभी PHP 5.4 पर कोशिश की और ऐसा लगता है कि यह ठीक काम करता है। (हालांकि यह अभी भी PHP 4 के लिए आवश्यक है)। - Xeoncross
@Xeoncross उत्तर की तारीख देखें :) - gaRex
हां, यही कारण है कि आपने 2013 में जवाब दिया था और टिकट वापस '07 में था। - Xeoncross