Laravel 4 Mcrypt在CLI

Bur*_*dem 0 php command-line-interface mcrypt laravel

我正在尝试使用phpunitLaravel 4,但我有Mcrypt问题.

vendor/laravel/framework/src/Illuminate/Foundation/start.php第29行,Laravel检查是否mcrypt已启用.

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

    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

当我phpunit在CLI时,它说;

Laravel requires the Mcrypt PHP extension.
Run Code Online (Sandbox Code Playgroud)

这是不可能的,因为以下命令显示一切正常.

$ php -v
PHP 5.4.4 (cli)

$ php --ini
Loaded Configuration File: /Applications/MAMP/bin/php/php5.4.4/conf/php.ini

$ php -i | grep "mcrypt support"
mcrypt support => enabled
Run Code Online (Sandbox Code Playgroud)

但是......当我添加以下代码vendor/laravel/framework/src/Illuminate/Foundation/start.php以查看使用的是哪个PHP版本时,将显示CLI5.3.15

die(phpversion().PHP_EOL);
Run Code Online (Sandbox Code Playgroud)

我不知道这怎么可能.

添加上面的代码后; php artisan显示5.4.4但phpunit显示5.3.15.这几乎是不可能的,因为两者都vendor/laravel/framework/src/Illuminate/Foundation/start.php用来检查是否启用了Mcrypt.

我不确定Laravel在testing环境中会改变什么吗?

fre*_*nus 5

我在我的Mac上有两个版本的php(一个开箱即用,另一个来自macport)也有同样的问题.因此,在使用命令行时,您调用的php版本取决于您的bin路径顺序(echo $ PATH).

如果你看看hashbangs:

  • 工匠从#!/ usr/bin/env php开始
  • phpunit以#!/ usr/bin/php开头

    $/usr/bin/env php -v
    PHP 5.3.25 (cli) (built: Jun  5 2013 12:14:23)
    
    $/usr/bin/php -v
    PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 28 2012 18:19:13)
    
    Run Code Online (Sandbox Code Playgroud)

希望能帮助到你,