laravel 未定义的变量:host

laravel Undefined variable: host

提问人:Onur 提问时间:1/18/2014 更新时间:1/20/2014 访问量:4106

问:

我的问题是我在MySqlConnector.php中出现以下错误。

 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 中使用一个连接时,我没有收到任何错误。但是在多个连接中,我收到错误。错误的原因是什么?

php mysql laravel 环境 主机

评论

1赞 Onur 1/18/2014
也有同样的错误。哎呀。错误:异常“ErrorException”,并在 /var/www/html/domain.com/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php:49 中显示消息“未定义的变量:主机”

答:

-1赞 Tzook Bar Noy 1/18/2014 #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赞 Onur 1/18/2014
我已经试过了。这部分工作良好。使用两个不同的mysql参数进行读/写时,问题就开始了。在这一部分中,我得到了错误。
0赞 Onur 1/20/2014 #2

好的,我找到了问题。这是因为 laravel 版本。我将 laravel 4.0 更新到 4.1,问题解决了。