@Artikul2

Как решить проблему с подключением к Clickhouse из php?

Поставил clickhouse на сервер, через dash.tabix.io успешно вхожу, указывая ip и порт 8123 с логином по умолчанию default и паролем. Также могу выполнять запросы через запросы в адресной строке браузера.

На локальном домашнем компе под виндой развернул Laragon и накатил php 8.2 с nginx. Подключил библиотеку github.com/smi2/phpClickHouse, но из php не могу соединиться.
$config = [
    'host' => 'ip сервера',
    'port' => '8123',
    'username' => 'default',
    'password' => '134567890',
    'https' => false
];
$db = new ClickHouseDB\Client($config);
$db->database('default');
$db->setTimeout(10);       // 10 seconds
$db->setConnectTimeOut(5); // 5 seconds
$db->ping(true); // if can`t connect throw exception

Ошибку показывает
Fatal error: Uncaught InvalidArgumentException: not set username in D:\dev\vendor\smi2\phpclickhouse\src\Client.php:71 Stack trace: #0 D:\dev\test.test\index.php(18): ClickHouseDB\Client->__construct(Array) #1 {main} thrown in D:\dev\vendor\smi2\phpclickhouse\src\Client.php on line 71

Типа - не установлен username.
Пробовал добавлять новых пользователей с текстовым паролем и шифрованным.

Выполняя команду в терминале Laragon, получаю Ok.
λ curl http://ip сервера:8123/

Даже и не знаю в какую сторону копать. Что стоит еще проверить?
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Надо прочитать сообщение об ошибке.
В нем говорится, что код на 71 строке в файле vendor\smi2\phpclickhouse\src\Client.php не видит элемент массива $config c ключом 'username'.

После этого надо убедиться, что в передаваемом в класс Cilent массиве присутствует элемент с ключом username и этот ключ написан правильно, без опечаток.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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