Max_Richter
@Max_Richter
backend-developer

Почему выходит [pdoexception] sqlstate[hy000] [2002] no such file or directory в Laravel 5?

Установил nginx, php-fpm, mariadb, Laravel 5 на vps.
Laravel команды artisan работают, но команды для БД не работают:
Ввожу команду
php artisan migrate:install

Выходит ошибка
[pdoexception] sqlstate[hy000] [2002] no such file or directory

В чем проблема?

Вот мой конфиг database.php в Laravel 5:
'mysql' => [
			'driver'    => 'mysql',
			'host'      => env('DB_HOST', '127.0.0.1'),
			'database'  => env('DB_DATABASE', 'demo'),
			'username'  => env('DB_USERNAME', 'demo'),
			'password'  => env('DB_PASSWORD', 'dq2'),
			'charset'   => 'utf8',
			'collation' => 'utf8_unicode_ci',
			'prefix'    => '',
      'unix_socket' => '/var/lib/mysql/mysql.sock',
			'strict'    => false,
		],


Вот где сокет и его права:
php -i | grep pdo
/etc/php.d/20-pdo.ini,
/etc/php.d/30-pdo_mysql.ini,
/etc/php.d/30-pdo_sqlite.ini,
API Extensions => mysql,mysqli,pdo_mysql
pdo_mysql
pdo_mysql.default_socket => /var/lib/mysql/mysql.sock => /var/lib/mysql/mysql.sock
pdo_sqlite

ls -l /var/lib/mysql/mysql.sock
srwxrwxrwx. 1 mysql mysql 0 июл 31 10:01 /var/lib/mysql/mysql.sock


Вот настройки php.ini
mysql.default_socket = /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
pdo_mysql.default_socket = /var/lib/mysql/mysql.sock


Все настройки приведеные здесь абсолютно верны, решение проблемы ниже в комментариях.
  • Вопрос задан
  • 27184 просмотра
Пригласить эксперта
Ответы на вопрос 4
AmdY
@AmdY
PHP и прочие вебштучки
А в .env у вас правильные данные?
Ответ написан
Комментировать
@newpy
web-dev
проверить в .env DB_HOST заменить на 127.0.0.1, возможно mysql создает сокет в /var/run/mysql/mysql.sock
php.ini тогда так:
mysql.default_socket = /var/run/mysqld/mysqld.sock
mysqli.default_socket = /var/run/mysqld/mysqld.sock
pdo_mysql.default_socket = /var/run/mysqld/mysqld.sock

Или как узнать сокет:
$ mysql -uroot -p
mysql> show variables like '%sock%';

покажет путь сокета, останется прописать в php.ini
Ответ написан
@Ramir1
В файле .env добавьте
UNIX_SOCKET=/var/run/mysqld/mysqld.sock
где укажите путь к сокету. Посмотреть путь можно в phpinfo() :-)
Ответ написан
Комментировать
c01nd01r
@c01nd01r
Продам гараж
Добавлю для себя, что в OctoberCMS под MAMP нужно было добавить в site.ru/config/database.php
'connections' => [
        'mysql' => [
            'driver'    => 'mysql',
            'host'      => '127.0.0.1',
            'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock', // !!!
            'port'      => 3306,
            'database'  => 'db',
            'username'  => 'user',
            'password'  => '123',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ],
    ],
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы