Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Fatal error: in ***/Connect.php on line 11 / 25 сообщений из 41, страница 1 из 2
08.06.2018, 10:02
    #39658110
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Здравствуйте, перенёс базу на другую машину (mariadb 10.* Debian 9), после переноса почему то перестал работать один из скриптов, ошибка звучит так: Fatal error: in ***/Connect.php on line 11 (полный адрес скрыт).
Сам скрипт выглядит так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php

$xml = simplexml_load_file("$root/db_conf.xml");

$host = $xml->host[0];
$dbname = $xml->dbname[0];
$user = $xml->user[0];
$password = $xml->password[0];
$table = $xml->table[0];

$db = new \PDO("mysql: host=$host; dbname=$dbname", $user, $password);
        
$db->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
$db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_NUM); 
$db->exec("SET NAMES 'utf8'"); 
$db->exec("SET CHARACTER SET 'utf8'");
$db->exec("SET SESSION collation_connection = 'utf8_general_ci'");



11-я строка: $db = new \PDO("mysql: host=$host; dbname=$dbname", $user, $password);

Подскажите пожалуйста в чём может быть ошибка и как её можно исправит?

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
08.06.2018, 10:48
    #39658149
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
try{
$db = new \PDO("mysql: host=$host; dbname=$dbname", $user, $password);
}
catch (\Exception $e) {
var_dump($e->getMessage());
}
...
Рейтинг: 0 / 0
08.06.2018, 10:57
    #39658154
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
opiumsЗдравствуйте, перенёс базу на другую машину (mariadb 10.* Debian 9), после переноса почему то перестал работать один из скриптовСлишком куцее сообщение об ошибке. Обычно подробностей больше.

Ну базу мало перенесть, надо ещё там mysql-пользователю предоставить доступ к этой базе и конфиг подключения в скриптах поправить.
Не будет лишним проверить доступность сервера с СУБД по сети. Хотя бы telnet'ом.
...
Рейтинг: 0 / 0
08.06.2018, 11:06
    #39658164
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
ScareCrow,

Код: php
1.
2.
3.
4.
string(52) "SQLSTATE[HY000] [1049] Unknown database 'craftedweb'" 
Notice: Undefined variable: db in */Connect.php on line 18

Fatal error: Call to a member function setAttribute() on null in */Connect.php on line 18



хм, craftedweb в списке есть и доступ тоже есть до неё...
18: $db->setAttribute( \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION );
...
Рейтинг: 0 / 0
08.06.2018, 11:09
    #39658168
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

доступность есть, подключение с других сайтов к этой машине, базе и даже таблице проходят успешно и без ошибок, не работает лишь этот скрипт.

P.S.
Код: php
1.
2.
mysql --version
mysql  Ver 15.1 Distrib 10.1.26-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
...
Рейтинг: 0 / 0
08.06.2018, 11:29
    #39658188
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Можно предположить, что база неправильно указана или сервер указан неправильно или, если указано доменное имя, оно резолвится неправильно. Иначе откуда бы взяться "Unknown database 'craftedweb'"
...
Рейтинг: 0 / 0
08.06.2018, 11:42
    #39658200
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Нет, с подключением проблем нет, использовал вот такой скрипт для проверки сейчас:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<?php
$dbhost = "192.168.1.7"; // Имя хоста для подключения к БД
$dbusername = "name"; // Пользователь базы данных
$dbpass = "pass"; // Пароль к базе данных
$dbname = "craftedweb"; // Имя базы данных
 
$dbconnect = mysql_connect ($dbhost, $dbusername, $dbpass);
if (!$dbconnect) { echo ("Не удается подключиться к серверу базы данных!"); }
 
if(@mysql_select_db($dbname)) { echo "Подключение к базе данных $dbname установлено!"; }
else die ("Не удается подключиться к базе данных $dbname!");
?>



И получил:
Подключение к базе данных craftedweb установлено!

И да, я использую подключение к локальной машине.
...
Рейтинг: 0 / 0
08.06.2018, 12:55
    #39658287
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
И запросы к базе с этого коннекта исправно работают?
...
Рейтинг: 0 / 0
08.06.2018, 14:43
    #39658397
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Да, по крайней мере вывод через mysqli точно:
Код: php
1.
$dbconnect = new mysqli($dbhost, $dbusername, $dbpass, $dbname);
...
Рейтинг: 0 / 0
08.06.2018, 14:58
    #39658418
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Шайтан, однако. на первый взгляд. Что известно о версии PHP, о версии старой СУБД, где усё работало? Возможно, какая-то несовместимость пхпшного драйвера pdo-mysql с текущей весией СУБД.
...
Рейтинг: 0 / 0
08.06.2018, 15:00
    #39658425
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Предыдущая машина:
Код: php
1.
2.
3.
4.
php -ver
PHP 5.6.31 (cli) (built: Jul  5 2017 22:25:39)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies


Код: php
1.
2.
mysql --version
mysql  Ver 14.14 Distrib 5.7.17, for Win64 (x86_64)


ОС: win 7, IIS 7.5
...
Рейтинг: 0 / 0
08.06.2018, 15:07
    #39658437
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Не понял, PHP скрипты тоже переехали?
...
Рейтинг: 0 / 0
08.06.2018, 15:19
    #39658447
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

нет, php-скрипты не переехали, они остались на месте.
На 1й машине запускается скрипт, он берёт информацию из СУБД MySQL 2й (локальной машины).
Возможно нужно как то правильно прописать подключение, тогда и всё получится.
...
Рейтинг: 0 / 0
08.06.2018, 16:49
    #39658500
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Ну были б PHP и СУБД не одной машине - тогда подключения можно указывать как localhost (оно и работает пошустрее). У Вас же машины разные, не получится так.

А в общем, довольно странная ситуация. Такое впечатление, что pdo_mysql не в состоянии договориться с СУБД - всё же, MySQL и MariaDB не совсем одно и то же. Хотя, mysqli работает же... Не смотрели в phpinfo(), драйвер для pdo_mysql и mysqli используется один и тот же или разные?
...
Рейтинг: 0 / 0
08.06.2018, 16:56
    #39658504
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Одинаковые, mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ .
Я предполагаю что использую старое pdo подключение к mysql, которое больше не поддерживается mariadb, и нужно как то перевести всё с pdo на mysqli, но я не так силён в php, поэтому не знаю как правильнее будет поменять подключение с pdo на mysqli.
...
Рейтинг: 0 / 0
08.06.2018, 18:07
    #39658541
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
opiumsЯ предполагаю что использую старое pdo подключение к mysql, которое больше не поддерживается mariadbСУБД как-то по барабану, что там на клиенте используется. Про существование PDO и других расширений PHP она не в курсе.

opiumsи нужно как то перевести всё с pdo на mysqli, но я не так силён в php, поэтому не знаю как правильнее будет поменять подключение с pdo на mysqli.Это разные расширения PHP. По простому говоря, всё PDO-шное придется переписывать на mysqli-шное. Если скриптов более нескольких штук, которые можно за часок поправить и отладить, тогда гораздо проще заменить СУБД на MySQL, если уж на то пошло. Хотя, можно попробовать и PHP обновить до последней версии (не думаю, что поможет, но всё же). Ещё есть немного настроек драйвера http://php.net/manual/ru/ref.pdo-mysql.php Но на первый взгляд, там ничего такого.

Ладно, в порядке эксперимента. В варианте с PDO получается "Unknown" только одна база `craftedweb`, или же стандартная, скажем, `mysql` или `test` тоже, типа, не существует?
...
Рейтинг: 0 / 0
09.06.2018, 05:30
    #39658666
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

К базам mysql и performance_schema подключается, данные получает, ко всем остальным базам не хочет ни в какую, та же ошибка
...
Рейтинг: 0 / 0
09.06.2018, 05:31
    #39658667
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Результат подключения на скрине
...
Рейтинг: 0 / 0
09.06.2018, 10:47
    #39658756
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
По идее, база `information_schema` тоже должна быть доступна (в MySQL есть такая системная база, но за MariaDB не скажу). Тогда, в принципе, можно предположить, что PDO работает с этим сервером.
На мой взгляд, есть смысл детально проработать две версии.
1. Права mysql-пользователя, с которым выполняется подключение.
И, если с правами всё в порядке, то
2. Фактически подключение происходит не к тому серверу (хосту), который задан в настройках. Определить это легко можно по содержимому (базы, таблицы, данные) и по системным переменным (та же hostname, например).
...
Рейтинг: 0 / 0
09.06.2018, 11:05
    #39658775
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

Хм, а если и с правами всё в порядке и подключение прописано верно?
...
Рейтинг: 0 / 0
09.06.2018, 12:02
    #39658798
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Имел в виду не что прописано в скрипте, а фактическое подключение. Возможно, заданная настройка DSN не применилась по какой-то причине.

В конфиге PHP, кстати, для PDO можно задать этот параметр php.net/manual/ru/pdo.configuration.php Для чего так сделано - не вполне понятно. Как будет вести себя PHP или PDO при неудачном подключении по заданному в скрипте DSN при наличии прописанного в конфиге - судить не берусь. Будет ли брать альтернативу из конфига или нет - об этом в мануале не написано.

Потому, когда явных ошибок и опечаток нет (включая такие ляпы, как "c" латинская и "с" русская), есть смысл продолжать поиск проблемы расширенно, на более тонком уровне. В противном же случае остается лишь констатировать факт "оно не работает". Однако, причина этого "не работает" не ясна, не найдена.

Гипотетически же, маршрут можно завернуть куда угодно сетевой маршрутизацией, например, в том числе и для отдельного порта. Но это не Ваш случай, ибо mysqli работает.
...
Рейтинг: 0 / 0
09.06.2018, 12:58
    #39658822
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
Я смог запустить скрипт на локальной машине, именно там, куда перенёс базу. Запустилось всё как под локалхостом, так и под тем пользователем, под которым подключался с другой машины, причины почему так происходит так и неясна
...
Рейтинг: 0 / 0
09.06.2018, 13:14
    #39658832
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
у пользователя есть права с локалхост и нет прав с удаленного IP
...
Рейтинг: 0 / 0
09.06.2018, 14:32
    #39658908
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
opiumsЗапустилось всё как под локалхостом, так и под тем пользователем, под которым подключался с другой машины, причины почему так происходит так и неяснаПосмотрите пользователей СУБД и их права. Например, 'user'@'localhost', 'user'@'%', а так же 'user'@'server.local' и 'user'@'192.168.10.20' - это разные пользователи (даже если server.local резолвится в 192.168.10.20 и наоборот). Не всегда можно сходу точно определить, под каким конкретно именем пользователя произошло подключение (ну, кроме локалхоста).
...
Рейтинг: 0 / 0
09.06.2018, 15:22
    #39658950
opiums
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Fatal error: in ***/Connect.php on line 11
vkle,

у пользователя все права есть, 'user'@'%', через админер подключение спокойно проходит, так же как и через остальные программы - navicat, heidisql, так же я добавлял принудительно базы, это так же не дало эффекта
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Fatal error: in ***/Connect.php on line 11 / 25 сообщений из 41, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]