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

Если вы посмотрите на хэшбанги:

  • ремесленник начинается с #!/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, как и ремесленник. Я установил 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