我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:

[PDOException]
SQLSTATE[HY000] [2002] No such file or directory

在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。


当前回答

在可能的情况下,我只是简单地使用

vagrant up

而不是

homestead up

为了我的熔炉幼虫装置。我假设这意味着站点正在得到服务,但MySQL服务器从未启动过。当我使用后一个命令启动我的流浪者盒子时,错误消失了。

其他回答

基于@dcarrith的回答…

我没有编辑配置文件,而是在PHP正在查找的位置中创建了一个别名,该别名连接到真正的mysql.sock。(源)

只需运行这两个命令(不需要重新启动):

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

我在ubuntu 18.04的nginx中遇到了同样的问题。通过以下步骤,我的问题已经解决:

首先打开终端,进入mysql CLI。要检查mysql套接字的位置,我写下面的命令。

mysql> show variables like '%sock%'

我得到了如下内容:

+-----------------------------------------+-----------------------------+
| Variable_name                           | Value                       |
+-----------------------------------------+-----------------------------+
| mysqlx_socket                           | /var/run/mysqld/mysqlx.sock |
| performance_schema_max_socket_classes   | 10                          |
| performance_schema_max_socket_instances | -1                          |
| socket                                  | /var/run/mysqld/mysqld.sock |
+-----------------------------------------+-----------------------------+
4 rows in set (0.00 sec)

在laravel项目文件夹中,在config文件夹中查找database.php文件。在mysql部分,我根据上表修改了unix_socket。

'mysql' => array(
        'driver'    => 'mysql',
        'host'      => '127.0.0.1',
        'database'  => 'database_name',
        'username'  => 'username',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'unix_socket' => '/var/run/mysqld/mysqld.sock',
    ),

现在只需保存更改,并重新加载页面,它就工作了。

解决了

在我的情况下,这是代码中的逻辑问题,连接值在if语句中:

if($_SERVER['HTTP_HOST'] == "localhost")

所以解决方案是添加一个管道,并添加127.0.0.1,这解决了我的问题

if($_SERVER['HTTP_HOST'] == "localhost" || $_SERVER['HTTP_HOST'] == "127.0.0.1")

在可能的情况下,我只是简单地使用

vagrant up

而不是

homestead up

为了我的熔炉幼虫装置。我假设这意味着站点正在得到服务,但MySQL服务器从未启动过。当我使用后一个命令启动我的流浪者盒子时,错误消失了。

如果有人还在寻找答案,只要检查你的。env文件。出于某种原因,laravel创建了一个。env。示例文件,所以所有这些答案都不适合我。我修复了重命名。env的问题。.env的示例