MAMP与Laravel Unix套接字

9
我正在本地开发服务器上使用MAMP来处理我的laravel应用程序,我正在尝试找出如何安全地设置我的服务器,以便我不必在数据库连接mysql数组中使用以下内容,因为那只能在我开发服务器上使用。当我将该行添加到mysql数组中时,它可以工作,但如果我在生产服务器上,则不会使用它。有什么想法吗?
'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',

.env.development.php

<?php

return [
    'DB_HOST' => '127.0.0.1',
    'DB_USERNAME' => 'root',
    'DB_PASSWORD' => '1234',
    'DB_NAME' => 'mytable'
];

app/config/database.php

'connections' => array(

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => getenv('DB_HOST'),
            'database'  => getenv('DB_NAME'),
            'username'  => getenv('DB_USERNAME'),
            'password'  => getenv('DB_PASSWORD'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),
5个回答

16

甚至有一个简单的解决方法。将此添加到您的 .env 文件中。

DB_HOST=localhost;unix_socket=/Applications/MAMP/tmp/mysql/mysql.sock

6
config/database.php文件中:
'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST'),
            'unix_socket' => env('UNIX_SOCKET'),
            'port' => env('DB_PORT'),
            'database' => env('DB_DATABASE'),
            'username' => env('DB_USERNAME'),
            'password' => env('DB_PASSWORD'),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],

关于.env文件:

DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=mytable
DB_USERNAME=root
DB_PASSWORD=1234
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

5

请检查bootstrap/start.php中的环境检测部分。您应该将您的机器名称添加到具有local键的数组中。(如果您不知道您的机器名称,请在终端中运行hostname命令。如果它是一些愚蠢的东西,请谷歌如何更改。这非常简单。)然后将您的数据库配置复制并粘贴到app/config/local/database.php文件中。如果该文件不存在,请创建它。


回答不错,但与问题无关。我问的是Unix套接字特定的问题。 - user3732216
@user3732216,你的问题说明你只需要在开发机器上使用unix_socket值。因此,在你的app/config/local/database.php配置文件中包含该行配置,而不要在生产环境的app/config/database.php中包含。 - Bogdan
但是如果你注意到了,我正在使用环境变量等。 - user3732216
1
我明白了。按照我的说法继续操作。如果您将development作为您的环境名称,那么请创建文件app/config/development/database.php,并将app/config/database.php的确切内容复制到此文件中,然后只需添加关于套接字的那一行即可。 - Hkan

1
请确保MAMP首选项设置为Apache端口:80,Nginx端口:80,MySQL端口:3306。
以下是我在Laravel 5.7中的解决方法:
进入config/database.php文件,找到以下第54行:
之前: 'unix_socket' => env('DB_SOCKET', ''),
之后: 'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
保存文件。
然后在终端运行: php artisan config:cache php artisan migrate

你的 php artisan config:cache 救了我。我已经为这个错误苦恼了好几天了。谢谢,伙计。 - Ali Hassan

0
如果以上解决方案都不适用于您,
请尝试实际启动您的Web服务器,因为这是我的解决方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接