Laravel에는 Mcrypt PHP 확장이 필요합니다. cron 작업에는 작동하지 않습니다.


Answers

.bash_profile을 통해 cronjob에 설정된 PATH에 의존하지 마십시오 (셸 기능이고 cronjob은 셸을 통해 실행되지 않습니다). 다음과 같은 것을 사용해야합니다.

* * * * * /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 수동으로 한 번 실행하여 스크립트 실행과 cron 간의 차이점을 확인하십시오. 항상 crontab (이 경우에는 PHP 바이너리)에서 절대 경로를 사용하려고 시도하십시오.

Question

그래서 많은 사람들이 해왔 던 것처럼 해결책이없는 것처럼이 문제에 시달리고 있습니다.

문제 : cron 작업에 의해 발행 된 명령이 실행되지 않고 메시지가 표시됩니다. Laravel requires the Mcrypt PHP extension.

나는 artisan 통해 명령을 실행할 수 있고 그들은 잘 작동합니다. OSX 10.8에서 MAMP를 사용하고 있습니다.

나는 올바른 PATH가 설정되었는지 확인하기 위해 .bash_profile 을 4 배 검사했다. 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); 추가 die(phpversion().PHP_EOL); vendor/laravel/framework/src/Illuminate/Foundation/start.php 에 올바른 버전을 사용하고 있음이 확인되었습니다.

그래서 나는 혼란 스럽다. 왜 cronjobs가 올바른 PHP 버전인지 또는 mcrypt 확장이 설치되어 있는지 알 수 없습니다. 무엇을 시도 할 수 있습니까?




이것은 아마도 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;'

MCrypt가 설치되어 있고 PHP에서 사용할 수 있습니까? 테스트 실행 중 :

php -i | grep  mcrypt

최소한 당신에게 보여줘야합니다 :

mcrypt support => enabled
mcrypt_filter support => enabled

편집하다:

또 다른 가능성은 cron이 다른 php (php, php-cli, php-cgi)를 실행하고 명시 적으로 올바르게 선택한 경우입니다. 모든 php.ini 파일에서 mcrypt가 모두 활성화되어 있는지 확인하십시오.