2014-01-18 4 views
2

Моя проблема в том, что я получил следующую ошибку в MySqlConnector.php.laravel Неопределенная переменная: host

Undefined variable: host error 

Я использую два разных соединения для чтения/записи. Я объединил их в файле config/database.php в зависимости от среды, используемой системой. Вот коды подключения mysql.

<?php 

switch($_SERVER['LARAVEL_ENV']){ 
    case 'production': 

     $connections = array(
      'mysql' => array(
       'read' => array(
        'host' => '127.0.0.1', 
       ), 
       'write' => array(
        'host' => 'hosturl', 
       ), 
       'driver' => 'mysql', 
       'database' => 'app_system', 
       'username' => 'username', 
       'password' => 'password', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ), 

      'mysql2' => array(
       'read' => array(
        'host' => '127.0.0.1', 
       ), 
       'write' => array(
        'host' => 'hosturl', 
       ), 
       'driver' => 'mysql', 
       'database' => 'app_userdata', 
       'username' => 'username', 
       'password' => 'password', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ) 
     ); 

    break; 
    case 'beta': 

     $connections = array(
      'mysql' => array(
       'read' => array(
        'host' => '127.0.0.1', 
       ), 
       'write' => array(
        'host' => 'hosturl', 
       ), 
       'driver' => 'mysql', 
       'database' => 'app_system', 
       'username' => 'username', 
       'password' => 'password', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ), 

      'mysql2' => array(
       'read' => array(
        'host' => '127.0.0.1', 
       ), 
       'write' => array(
        'host' => 'hosturl', 
       ), 
       'driver' => 'mysql', 
       'database' => 'app_userdata', 
       'username' => 'username', 
       'password' => 'password', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ) 
     ); 

    break; 
    case 'development': 

     $connections = array(
      'mysql' => array(
       'driver' => 'mysql', 
       'host'  => 'localhost', 
       'database' => 'app_system', 
       'username' => 'root', 
       'password' => 'root', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ), 

      'mysql2' => array(
       'driver' => 'mysql', 
       'host'  => 'localhost', 
       'database' => 'app_userdata', 
       'username' => 'root', 
       'password' => 'root', 
       'charset' => 'utf8', 
       'collation' => 'utf8_unicode_ci', 
       'prefix' => '', 
      ) 
     ); 

    break; 
} 

return array(
'fetch'   => PDO::FETCH_CLASS, 
'default'  => 'mysql', 
'connections' => $connections, 
'migrations' => 'migrations', 
'redis'   => array(
    'cluster' => true, 
    'default' => array(
     'host'  => '127.0.0.1', 
     'port'  => 6379, 
     'database' => 0, 
    ), 
), 

);

Все, что я хотел сделать, это использовать другой хост для чтения, а другой - для записи. Когда я использую одно соединение в localhost, я не получаю ошибки. Но в нескольких соединениях я получаю ошибку. В чем причина ошибки?

+1

есть такая же ошибка. og.ERROR: exception 'ErrorException' с сообщением 'Неопределенная переменная: host' в /var/www/html/domain.com/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:49 –

ответ

-1

только для учета вашей среды реализации.

У вас есть сборка laravel для обнаружения окружающей среды и загрузки определенных файлов conf.

вы можете прочитать здесь: http://laravel.com/docs/configuration#environment-configuration

но общая идея состоит в том, чтобы определить ваши среды в:

$env = $app->detectEnvironment(array(

    'local' => array('your-local-machine-name'), 
    'production' => array('your--prod-machine-name'), 

)); 

и чем вы идете в конфиге папки и создать внутри него окружение папки Еогеаспа у вас есть , создайте производственную папку, а не каждый файл, который вы хотите переопределить, просто скопируйте его в папку и отредактируйте вещи, которые вы хотите переопределить.

осуществить это, и чем проверить ошибки назад здесь снова

+0

Я уже пробовал это. Эта часть работает хорошо. Проблема начинается с использования двух разных параметров mysql для чтения/записи. В этой части я получаю ошибку. –

0

Ok я нашел проблему. Это было из-за версии laravel. Я обновил laravel 4.0 до 4.1 и проблема была решена.

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