powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Fatal error: in ***/Connect.php on line 11
25 сообщений из 41, страница 1 из 2
Fatal error: in ***/Connect.php on line 11
    #39658110
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, перенёс базу на другую машину (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
Fatal error: in ***/Connect.php on line 11
    #39658149
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
try{
$db = new \PDO("mysql: host=$host; dbname=$dbname", $user, $password);
}
catch (\Exception $e) {
var_dump($e->getMessage());
}
...
Рейтинг: 0 / 0
Fatal error: in ***/Connect.php on line 11
    #39658154
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
opiumsЗдравствуйте, перенёс базу на другую машину (mariadb 10.* Debian 9), после переноса почему то перестал работать один из скриптовСлишком куцее сообщение об ошибке. Обычно подробностей больше.

Ну базу мало перенесть, надо ещё там mysql-пользователю предоставить доступ к этой базе и конфиг подключения в скриптах поправить.
Не будет лишним проверить доступность сервера с СУБД по сети. Хотя бы telnet'ом.
...
Рейтинг: 0 / 0
Fatal error: in ***/Connect.php on line 11
    #39658164
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fatal error: in ***/Connect.php on line 11
    #39658168
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fatal error: in ***/Connect.php on line 11
    #39658188
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно предположить, что база неправильно указана или сервер указан неправильно или, если указано доменное имя, оно резолвится неправильно. Иначе откуда бы взяться "Unknown database 'craftedweb'"
...
Рейтинг: 0 / 0
Fatal error: in ***/Connect.php on line 11
    #39658200
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Fatal error: in ***/Connect.php on line 11
    #39658287
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И запросы к базе с этого коннекта исправно работают?
...
Рейтинг: 0 / 0
Fatal error: in ***/Connect.php on line 11
    #39658397
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

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

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

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

Одинаковые, mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ .
Я предполагаю что использую старое pdo подключение к mysql, которое больше не поддерживается mariadb, и нужно как то перевести всё с pdo на mysqli, но я не так силён в php, поэтому не знаю как правильнее будет поменять подключение с pdo на mysqli.
...
Рейтинг: 0 / 0
Fatal error: in ***/Connect.php on line 11
    #39658541
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Fatal error: in ***/Connect.php on line 11
    #39658666
opiums
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

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

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

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

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

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

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

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


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