0

我正在尝试phpunit与 Laravel 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);
}

当我phpunit在 CLI 时,它说;

Laravel requires the Mcrypt PHP extension.

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

$ 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

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

die(phpversion().PHP_EOL);

我不知道这怎么可能。

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

我不确定,但是 Laravel 在testing环境中会改变一些东西吗?

4

1 回答 1

5

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

如果您查看 hashbangs :

  • artisan 从 #!/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)
    

希望能帮助到你,

于 2013-06-09T10:27:27.137 回答