Развернутый быстрый облачный сервер просто для того, чтобы разместить MongoDB, чтобы избавиться от него из любопытства. Он установлен и работает. Сделал тестовую БД / таблицу следующим образом:
db.items.insert({ name: 'eggs', quantity: 10, price: 1.50 }) db.items.insert({ name: 'bacon', quantity: 3, price: 3.50 }) db.items.insert({ name: 'tomatoes', quantity: 30, price: 0.50 })
Когда я запускаю db.items.find({})
все элементы появляются, и все хорошо.
Теперь в PHP, когда я подключаюсь к этой базе данных с другого сервера, я делаю это:
// open connection to MongoDB server $conn = new Mongo('mongodb://theAdmin:Gold1234@165.225.130.252:27017'); // access database $db = $conn->test; // access collection $collection = $db->items; // execute query // retrieve all documents $cursor = $collection->find(); // iterate through the result set // print each document echo $cursor->count() . ' document(s) found. <br/>'; foreach ($cursor as $obj) { echo 'Name: ' . $obj['name'] . '<br/>'; echo 'Quantity: ' . $obj['quantity'] . '<br/>'; echo 'Price: ' . $obj['price'] . '<br/>'; echo '<br/>'; }
и я получаю эту ошибку:
Неустранимая ошибка: Не удалось исключить «MongoConnectionException» с сообщением «Не удалось подключиться к: 165.225.130.252:27017: конечная точка транспорта не подключена» в /home/moosex/public_html/info.php:4. Трассировка стека: # 0 / home / moosex /public_html/info.php(4): Mongo-> __construct ('mongodb: // [theA …') # 1 {main} брошен в /home/moosex/public_html/info.php в строке 4
Я посмотрел и попробовал несколько разных способов подключения и до сих пор не могу его получить. Как я могу подключиться удаленно?
Кстати, это фактический пароль пользователя и адрес на этот сервер (там ничего нет, кроме яиц бекона и помидоров), если вы можете подключиться к нему, бог, благослови вас.
Чтобы иметь возможность отлаживать «случайную странность», как это, очень полезно включить внутреннее ведение журнала драйверов. Водитель делает много вещей за кулисами и может выплескивать всю важную информацию об отладке.
Добавьте вверху вашего скрипта следующее:
<?php MongoLog::setLevel(MongoLog::ALL); MongoLog::setModule(MongoLog::ALL); ?>
По умолчанию регистратор вытолкнет «сообщения об ошибках php» (E_NOTICE / E_WARNING), если у вас включен error_log, обязательно проверьте этот файл для результатов.
Для вашей (слегка измененной) строки подключения я получаю следующие результаты:
Notice: PARSE INFO: Parsing mongodb://theAdmin:Gold1234@localhost:27027 in Command line code on line 1 Notice: PARSE INFO: - Found user 'theAdmin' and a password in Command line code on line 1 Notice: PARSE INFO: - Found node: localhost:27027 in Command line code on line 1 Notice: PARSE INFO: - Connection type: STANDALONE in Command line code on line 1 Notice: PARSE INFO: - No database name found for an authenticated connection. Using 'admin' as default database in Command line code on line 1 Notice: CON INFO: mongo_get_read_write_connection: finding a STANDALONE connection in Command line code on line 1 Notice: CON INFO: connection_create: creating new connection for localhost:27027 in Command line code on line 1 Notice: CON WARN: connection_create: error while creating connection for localhost:27027: Invalid argument in Command line code on line 1 Notice: CON WARN: Couldn't connect to 'localhost:27027': Invalid argument in Command line code on line 1
Я подозреваю, что проблема с брандмауэром в обоих концах. Можете ли вы подключиться к серверу с помощью оболочки mongo?