2013-05-12 6 views
3

Я создал тестовую среду в start.php:Настройки различный общественный путь в Laravel 4 для тестирования среды

$env = $app->detectEnvironment(array(
    'local' => array('http://localhost*', '*.dev'), 
)); 

Теперь я хочу, чтобы определить другой общественный путь для local среды

производства: 'общественность' =>DIR '/ ../../../WWW /',

местные:.. 'общественность' =>DIR '/ ../../../www/local ',

но paths.php находится в папке bootstrap вместо приложения, так как я могу настроить другой общедоступный путь?

+0

Нет необходимости делать это из-за того, что Laravel и среды работают, вы можете просто настроить свою тестовую конфигурацию и тестировать связанные элементы в файлы начальной загрузки, к которым у вас есть доступ. – ollieread

ответ

0

Просто была такая же проблема несколько дней назад: мне нужно, чтобы изменить имя папки общего доступа от «общественного» до «WWW» для производства, так как это на виртуальный хостинг, и я не могу изменить его.

Я искал способ настроить это, придерживаясь системы файлов конфигурации. Вот как я это сделал: создал новый файл /app/start/production.php и положить внутрь:

if ('production' === $app['env']) 
{ 
    $app->instance('path.public', str_replace('public', 'www', $app['path.public'])); 
} 

этот файл (он специфический к среде) вызывается в процессе начальной загрузки, так что небольшой хак не должен вызывать проблем.

Вызов сам делается в /vendor/laravel/framework/src/Illuminate/Foundation/start.php на линии 256.

Примечание: это еще не были испытаны в производстве (запланированное развертывание этого неделя), но проверено на местную среду

Надеюсь, что это поможет.

2

У вас нет.

Это не то, как окружающая среда должна работать. Среда позволяет вам иметь разные значения конфигурации на основе среды, в которой вы находитесь. В качестве примера вы можете использовать драйвер сеанса native в своей локальной среде, но в рабочей среде вы хотите использовать драйвер redis.

Официальная документация охватывает configuration of environments. При использовании сред настоятельно рекомендуется (с точки зрения безопасности) использовать имя машины, а не URL.

3

у вас есть доступ к переменной $env в вашем paths.php (так как он просто входит в комплект от start.php). поэтому вы можете построить выключатель:

'public' => ($env == 'local') ? __DIR__.'/../public' : __DIR__ . '/some/where/else/public', 

работает для меня в производстве.

Смежные вопросы