【问题标题】:Laravel 4 Mcrypt at CLICLI 上的 Laravel 4 Mcrypt
【发布时间】:2013-06-05 04:48:22
【问题描述】:

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

当我在 CLI phpunit 时,它说:

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 环境中会改变什么吗?

【问题讨论】:

    标签: php laravel command-line-interface mcrypt


    【解决方案1】:

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

    如果你看一下 hashbang:

    • 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)
      

    希望对你有帮助,

    【讨论】:

    • 我也是这么想的,但vendor/phpunit/phpunit/phpunit.phpvendor/bin/phpunit都是以#!/usr/bin/env php开头的,就像工匠一样。我通过 Composer 安装了 PHPUnit,这有什么不同吗?
    • 成功了。前段时间我通过 Pear 安装了 PHPUnit,终端仍在使用该 PHPUnit。我更新了我的~/.bash_profile,它现在可以工作了。非常感谢。
    • vendor/phpunit/phpunit/phpunit.php 和 vendor/bin/phpunit 可能不在您的路径中,但 /usr/bin/phpunit 是。 ;)
    猜你喜欢
    • 2013-07-03
    • 2014-06-29
    • 2015-03-27
    • 2017-06-19
    • 2014-10-29
    • 2017-05-12
    • 2013-11-30
    • 2013-08-27
    相关资源
    最近更新 更多