Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.

PHP Fatal error @ 'bin/directus install:database' -> " Uncaught InvalidArgumentException:" #541

Closed
ghost opened this issue Oct 30, 2018 · 2 comments
Labels
bug Something isn't working

Comments

@ghost
Copy link

ghost commented Oct 30, 2018

- Device: Desktop
- OS:
	lsb_release -rd
		Description:    openSUSE Leap 15.0
		Release:        15.0
	uname -rm
		4.19.0-lp150.3.g09557ad-default x86_64
- Web Server:
	nginx -v
		nginx version: nginx/1.15.5
- PHP Version:
	php -v
		PHP 7.2.12-dev (cli) (built: Oct 16 2018 21:08:17) ( NTS )
		Copyright (c) 1997-2018 The PHP Group
		Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
		    with Zend OPcache v7.2.12-dev, Copyright (c) 1999-2018, by Zend Technologies
	php -m | grep -i sql
		mysqli
		mysqlnd
		pdo_mysql
		pdo_sqlite
		sqlite3

- Database:
	mariadb_config --version
		10.3.11
- Install Method: cloned `build` branch

cd /srv/directus-api
git branch -a | head -n 1
	* build
git log | head
	commit beac8867179137fc01a872f073b99dda9fb114d8
	Author: rijkvanzanten <rijkvanzanten@me.com>
	Date:   Sat Oct 27 11:55:05 2018 -0400

	    v2.0.4

	commit 58747f253bbd0bafdeeb18ba769193ac4c62b739
	Author: rijkvanzanten <rijkvanzanten@me.com>
	Date:   Fri Oct 26 17:39:09 2018 -0400

mysql \
  --socket='/var/run/mdb/mdb.sock' \
  --user='directus_user' \
  --password='directus_pass' \
directus_db

	MariaDB [directus_db]> status
		status
		--------------
		mysql  Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1

		Connection id:          24
		Current database:       directus_db
		Current user:           directus_user@localhost
		SSL:                    Not in use
		Current pager:          /usr/bin/less
		Using outfile:          ''
		Using delimiter:        ;
		Server:                 MariaDB
		Server version:         10.3.11-MariaDB-log Source distribution
		Protocol version:       10
		Connection:             Localhost via UNIX socket
		Server characterset:    utf8mb4
		Db     characterset:    utf8mb4
		Client characterset:    utf8mb4
		Conn.  characterset:    utf8mb4
		UNIX socket:            /var/run/mdb/mdb.sock
		Uptime:                 4 hours 13 min 33 sec

		Threads: 8  Questions: 181  Slow queries: 0  Opens: 46  Flush tables: 1  Open tables: 30  Queries per second avg: 0.011
		--------------


cat /srv/directus-api/config/api.php
	<?php

	return [
		'app' => [
			'env' => 'development',
			'timezone' => 'America/Los_Angeles',
		],
		'settings' => [
			'logger' => [
				'path' => '/var/log/nginx/directus-api.log',
			],
		],
		'database' => [
			'type' => 'mysql',
			'socket' => '/var/run/mdb/mdb.sock',
			'name' => 'directus_db',
			'username' => 'directus_user',
			'password' => 'directus_pass',
			'engine' => 'InnoDB',
			'charset' => 'utf8mb4'
		],
		'cache' => [
			'enabled' => true,
			'response_ttl' => 3600, // seconds
			'pool' => [
				'adapter'   => 'redis',
				'host'      => '127.0.0.1',
				'port'      => 6379
			],
		],
		'storage' => [
			'adapter' => 'local',
			'root' => 'public/uploads/_/originals',
			'root_url' => '/uploads/_/originals',
			'thumb_root' => 'public/uploads/_/thumbnails',
		],
		'mail' => [
			'default' => [
				'transport' => 'smtp',
				'from' => 'directus-api@example.com',
				'host' => 'mx.example.com',
				'port' => 587,
				'username' => 'send@mx.example.com',
				'password' => 'xxxxxxxxxxxxxxxxxxx',
				'encryption' => 'tls',
			],
		],
		'cors' => [
			'enabled' => false,
			'origin' => ['*'],
			'methods' => [
				'GET',
				'POST',
				'PUT',
				'PATCH',
				'DELETE',
				'HEAD',
			],
			'headers' => [],
			'exposed_headers' => [],
			'max_age' => null, // in seconds
			'credentials' => false,
		],

		'rate_limit' => [
			'enabled' => false,
			'limit' => 100, // number of request
			'interval' => 60, // seconds
			'adapter' => 'redis',
			'host' => '127.0.0.1',
			'port' => 6379,
			'timeout' => 10
		],
		'hooks' => [
			'actions' => [],
			'filters' => [],
		],
		'feedback' => [
			'token' => '0000000000000000000000000000000',
			'login' => false,
		],
		'tableBlacklist' => [],
		'auth' => [
			'secret_key' => '11111111111111111111111111111111',
			'public_key' => '22222222222222222222222222222222',
			'social_providers' => []
		],
	];

cd /srv/directus-api
bin/directus install:database
	PHP Fatal error:  Uncaught InvalidArgumentException: There was a problem connecting to the database: SQLSTATE[HY000] [2002] No such file or directory in /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php:115
	Stack trace:
	#0 /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(103): Phinx\Db\Adapter\MysqlAdapter->connect()
	#1 /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(145): Phinx\Db\Adapter\PdoAdapter->getConnection()
	#2 /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(164): Phinx\Db\Adapter\PdoAdapter->query('SELECT * FROM d...')
	#3 /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(250): Phinx\Db\Adapter\PdoAdapter->fetchAll('SELECT * FROM d...')
	#4 /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php(227): Phinx\Db\Adapter\PdoAdapter->getVersionLog()
	#5 /srv/directus-api/vendor/robmorgan/phinx/src/Phin in /srv/directus-api/vendor/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php on line 115

cat vendor/robmorgan/phinx/src/Phinx/Db/Adapter/MysqlAdapter.php
	...
	    try {
	        $db = new \PDO($dsn, $options['user'], $options['pass'], $driverOptions);
	    } catch (\PDOException $exception) {
115	        throw new \InvalidArgumentException(sprintf(
	            'There was a problem connecting to the database: %s',
	            $exception->getMessage()
	        ));
	        }
	...
@benhaynes benhaynes added the bug Something isn't working label Oct 30, 2018
@benhaynes benhaynes added this to Needs triage in Bug Triage via automation Oct 31, 2018
@wellingguzman wellingguzman moved this from Needs triage to High priority in Bug Triage Oct 31, 2018
@wellingguzman
Copy link
Contributor

wellingguzman commented Oct 31, 2018

Thanks @hal869, the issue is due to the difference in naming in our configuration for socket and the PDO socket.

@wellingguzman wellingguzman added this to To do in v2.0.5 Oct 31, 2018
@wellingguzman wellingguzman moved this from To do to In progress in v2.0.5 Oct 31, 2018
Bug Triage automation moved this from High priority to Closed Oct 31, 2018
v2.0.5 automation moved this from In progress to Done Oct 31, 2018
@wellingguzman
Copy link
Contributor

I ended up keeping the socket name abstraction for unix_socket.

This issue was fixed by 299272f, passing the missing unix_socket parameter.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
Bug Triage
  
Closed
v2.0.5
  
Done
Development

No branches or pull requests

2 participants