Laravel को Mcrypt PHP एक्सटेंशन की आवश्यकता है। क्रॉन जॉब्स के लिए काम नहीं करना




cron laravel-4 (2)

यह संभवतः एक PHP समस्या है, उस संदेश के लिए कोड को प्रतिरूप देखिए:

if ( ! extension_loaded('mcrypt'))
{
    die('Laravel requires the Mcrypt PHP extension.'.PHP_EOL);

    exit(1);
}

कमांड लाइन चलने पर अपने php का परीक्षण करें:

php -r 'echo PHP_EOL . (extension_loaded("mcrypt") ? "loaded" : "not loaded") . PHP_EOL . PHP_EOL;'

एमक्रिप्शन स्थापित है और php के लिए उपलब्ध है? इसे चलने का परीक्षण करें:

php -i | grep  mcrypt

यह आपको कम से कम दिखाएगा:

mcrypt support => enabled
mcrypt_filter support => enabled

संपादित करें:

एक और संभावना क्रोन एक अलग php (php, php-cli, php-cgi) चल रहा है और जब आपने इसे सही तरीके से चयनित किया है अपने सभी php.ini फाइलों पर एक नज़र डालें यह देखने के लिए कि उनमें से सभी में mcrypt सक्षम है या नहीं।

इसलिए मैं इस मुद्दे के साथ ग्रस्त हूं, जैसे कई अन्य हैं, लेकिन कोई समाधान नहीं है।

मुद्दा : एक क्रॉन कार्य द्वारा जारी किए गए आदेश रन नहीं करते हैं और संदेश देते हैं: Laravel requires the Mcrypt PHP extension.

मैं artisan माध्यम से आदेश चला सकते हैं और वे ठीक काम करते हैं। मैं ओएसएक्स 10.8 पर एमएएमपी का उपयोग कर रहा हूं।

मेरे पास चौगुनी जांच की गई है my.bash_profile, यह सुनिश्चित करने के लिए कि सही पाथ सेट है जो है: export PATH=/Applications/MAMP/bin/php/php5.4.4/bin:$PATH । टर्मिनल में which php द्वारा पुष्टि की। php -v पुष्टि करता है कि PHP 5.4.4 का इस्तेमाल किया जा रहा है। php -i पुष्टि करता है कि mcrypt एक्सटेंशन स्थापित और सक्षम है। यहां तक ​​कि die(phpversion().PHP_EOL); vendor/laravel/framework/src/Illuminate/Foundation/start.php यह पुष्टि की गई है कि यह सही संस्करण का उपयोग कर रहा है

इसलिए मैं स्टम्प्ड हूं। मुझे नहीं पता कि क्रोनबोज़ सही पीएचपी संस्करण को क्यों नहीं पहचान रहे हैं या मैक्रिप्ट एक्सटेंशन स्थापित है। मैं क्या कोशिश कर सकता हूँ?


PATH को cronjob के माध्यम से .bash_profile के माध्यम से सेट नहीं किया जा रहा है (यह एक शेल सुविधा है और क्रोनबॉज एक शेल के माध्यम से नहीं चल रही है), आप को कुछ पसंद करना चाहिए

* * * * * /Applications/MAMP/bin/php/php5.4.4/bin/php-something? /path/to/vendor/laravel/framework/src/Illuminate/Foundation/start.php

एक परीक्षण कुछ ऐसा हो सकता है:

# /tmp/test.php
<?php file_put_contents('/tmp/a_test', `id`."\n".var_export($_ENV, true)."\n".var_export(extension_loaded('mcrypt'), true));
# in crontab
* * * * * /Applications/MAMP/bin/php/php5.4.4/bin/php-something? /tmp/test.php

स्क्रिप्ट चलने के बीच अंतर को php /tmp/test.php करने के लिए मैन्युअल रूप से php /tmp/test.php चलाएं, और क्रॉन; और हमेशा क्रॉन्टाब में पूर्ण पथ का उपयोग करने की कोशिश करें (इस मामले में आपके php बाइनरी में)





mcrypt