php7 php cron laravel laravel-4 mcrypt

php7 - Laravel requiere la extensión de Mcrypt PHP. No funciona para trabajos cron



mcrypt php 7 (2)

Así que estoy plagado de este problema, como muchos otros, pero sin solución.

El problema : los comandos emitidos por una tarea cron no se ejecutan y dan el mensaje: Laravel requires the Mcrypt PHP extension.

Puedo ejecutar comandos a través de artisan y funcionan bien. Estoy usando MAMP en OSX 10.8.

He comprobado en quadrupal mi .bash_profile para asegurarme de que la RUTA sea la correcta, que es: export PATH=/Applications/MAMP/bin/php/php5.4.4/bin:$PATH . Confirmado por which php en la terminal. php -v confirma que PHP 5.4.4 está siendo utilizado. php -i confirma que la extensión mcrypt está instalada y habilitada. Incluso agregando die(phpversion().PHP_EOL); a vendor/laravel/framework/src/Illuminate/Foundation/start.php se confirma que está usando la versión correcta.

Así que estoy perplejo. No sé por qué los cronjobs no reconocen la versión correcta de PHP o que la extensión mcrypt está instalada. ¿Qué puedo probar?


Este es probablemente un problema de PHP, mira el código responsable de ese mensaje:

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

Pon a prueba tu php en la línea de comando en ejecución:

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

MCrypt está instalado y disponible para php? Pruébalo corriendo:

php -i | grep mcrypt

Debe mostrarle al menos:

mcrypt support => enabled mcrypt_filter support => enabled

EDITAR:

Otra posibilidad es que cron ejecute un php diferente (php, php-cli, php-cgi) y cuando seleccionaste explícitamente el correcto funcionó. Eche un vistazo a todos sus archivos php.ini para ver si mcrypt está habilitado en todos ellos.


No confíe en que PATH se configure para cronjob a través de .bash_profile (es una función de shell y los cronjobs no se ejecutan a través de un shell), debería usar algo como

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

Una prueba podría ser algo como esto:

# /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

Ejecute php /tmp/test.php una vez manualmente para detectar las diferencias entre la ejecución del script y cron; y siempre intente utilizar rutas absolutas en crontab (en este caso a su php binario).