Laravel 4 Mcrypt в CLI

Опитвам се да използвам 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?


person Burak Erdem    schedule 09.06.2013    source източник


Отговори (1)


Имах същия проблем на моя Mac с две версии на php (едната идва от кутията, а другата от macport). така че когато използвате командния ред, версията на php, която извиквате, зависи от реда на пътя ви към кошчето (echo $PATH).

Ако погледнете хашбенгите:

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

Надявам се да помогне,

person frenus    schedule 09.06.2013
comment
Помислих си същото, но и vendor/phpunit/phpunit/phpunit.php, и vendor/bin/phpunit започват с #!/usr/bin/env php, точно като artisan. Инсталирах PHPUnit чрез Composer, това има ли значение? - person Burak Erdem; 09.06.2013
comment
Проработи. Бях инсталирал PHPUnit чрез Pear преди известно време и терминалът все още използваше този PHPUnit. Актуализирах моя ~/.bash_profile и вече работи. Много благодаря. - person Burak Erdem; 09.06.2013
comment
vendor/phpunit/phpunit/phpunit.php и vendor/bin/phpunit вероятно не са на пътя ви, но /usr/bin/phpunit е. ;) - person frenus; 09.06.2013