Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel需要Mcrypt PHP扩展。不为cron工作_Php_Cron_Laravel_Laravel 4_Mcrypt - Fatal编程技术网

Laravel需要Mcrypt PHP扩展。不为cron工作

Laravel需要Mcrypt PHP扩展。不为cron工作,php,cron,laravel,laravel-4,mcrypt,Php,Cron,Laravel,Laravel 4,Mcrypt,因此,我和其他许多人一样,被这个问题困扰,但没有解决办法 问题:cron任务发出的命令不会运行并给出消息:Laravel需要Mcrypt PHP扩展。 我可以通过artisan运行命令,它们工作正常。我正在OSX 10.8上使用MAMP 我已经四次检查了我的.bash\u配置文件,以确保设置了正确的路径:export PATH=/Applications/MAMP/bin/php/php5.4.4/bin:$PATH。由终端中的哪个php确认php-v确认正在使用PHP5.4.4php-i确认已

因此,我和其他许多人一样,被这个问题困扰,但没有解决办法

问题:cron任务发出的命令不会运行并给出消息:
Laravel需要Mcrypt PHP扩展。

我可以通过
artisan
运行命令,它们工作正常。我正在OSX 10.8上使用MAMP

我已经四次检查了我的
.bash\u配置文件
,以确保设置了正确的路径:
export PATH=/Applications/MAMP/bin/php/php5.4.4/bin:$PATH
。由终端中的哪个php确认
php-v
确认正在使用PHP5.4.4
php-i
确认已安装并启用mcrypt扩展。甚至添加
die(phpversion().PHP_EOL)
to
vendor/laravel/framework/src/illumb/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时,它就可以工作了。查看所有php.ini文件,看看是否在所有文件中都启用了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时,它就可以工作了。查看所有php.ini文件,看看是否在所有文件中都启用了mcrypt。

不要依赖于通过.bash_配置文件为cronjob设置的路径(这是一个shell功能,cronjobs不是通过shell运行的),您应该使用

* * * * * /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
#/tmp/test.php

不要依赖于通过.bash_概要文件为cronjob设置的路径(这是一个shell特性,cronjobs并不是通过shell运行的),您应该使用类似

* * * * * /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
#/tmp/test.php

返回
loaded
&这两个
mcrypt支持
mcrypt\u过滤器
都是启用的,所以我只是在crontab命令中将php路径显式设置为MAMP的php路径。以前我只是使用
***php/path/to/my/script.php
。它现在可以工作了,但我不想显式地设置路径。我能解决这个问题吗?返回
loaded
&这两个
mcrypt支持
mcrypt\u过滤器
都是启用的,所以我只是在crontab命令中将php路径显式设置为MAMP的php路径。以前我只是使用
***php/path/to/my/script.php
。它现在可以工作了,但我不想显式地设置路径。我能解决这个问题吗?那么,本质上你是说最佳实践应该是在cron命令中设置绝对路径?我不知道。有没有办法告诉运行CLI命令的php版本使用与我的路径相同的版本?@JaredEitnier:您可以这样做
***/home/your_user/.bash_profile&&php/path/to/vendor/laravel/framework/src/illighte/Foundation/start.php
(关于.或“源代码”的更多信息,请点击此处:)我将坚持绝对路径:)谢谢!那么,本质上您是说最佳实践应该是在cron命令中设置绝对路径?我不知道。有没有办法告诉运行CLI命令的php版本使用与我的路径相同的版本?@JaredEitnier:您可以这样做
***/home/your_user/.bash_profile&&php/path/to/vendor/laravel/framework/src/illighte/Foundation/start.php
(关于.或“源代码”的更多信息,请点击此处:)我将坚持绝对路径:)谢谢!