Endless Storm
Commander
- Registriert
- Dez. 2008
- Beiträge
- 2.154
Hallo zusammen,
nachdem ich erfolgreich auf meine mysql-DB eine Verbindung aufbauen konnte, wollte ich zurück zu meinen eigentlichen Aufgaben und über PHP mit MongoDB arbeiten.
Das Thema mit dem HTML-Code und der später auch funktionierenden mysql-Anbindung ist hier zu finden: Link.
Folgendes ist geschehen:
- Win7x64
- XAMPP V3.2.2 mit PHP7.0 installiert und eingerichtet
- MongoDB 3.4.1 installiert
- PHP-Treiber für Mongo heruntergeladen. PHPinfo sagt: PHP Version 7.0.13, Architecture: x86, Thread Safty: enabled
- Folgender Treiber wurde also heruntergeladen: php_mongodb-1.2.2-7.0-ts-vc14-x86, die DLL nach ext kopiert und die Zeile "extension=php_mongodb.dll" über "Module Settings" eingefügt.
- MongoDB und XAMPP\PHP sind dem Path hinzugefügt.
- Die PHPinfo sagt nun folgendes (im Internet sinds wesentlich mehr Infos zur MongoDB zu finden in der PHPinfo, warum fehlen diese bei mir? Z.B. fehlen Infos zum host und port usw.):
- Über die cmd-Console kann ich mongod starten:
- Über eine weitere cmd-Console starte ich mongo:
- Ein User mit Name/PW: "user1/user1password" ist angelegt. Auf Inhalte der DB kann ich über die Console zugreifen und Datensätze ergänzen, ändern und entfernen.
- Nun versuche ich mit meiner PHP auf die DB zuzugreifen, bitte korrigiert mich, falls hier Fehler enthalten sind:
Die apache-error-log sagt folgende Zeile zum aktuellen Request an:
Jetzt finde ich im Internet, dass mein Versuch, die PHP-Treiber zu installieren, wohl fehlerhaft ist. Aber ich weiß nicht mehr weiter, wie ich das einrichten muss, dass es klappt...
Hoffe ihr wisst Rat.
nachdem ich erfolgreich auf meine mysql-DB eine Verbindung aufbauen konnte, wollte ich zurück zu meinen eigentlichen Aufgaben und über PHP mit MongoDB arbeiten.
Das Thema mit dem HTML-Code und der später auch funktionierenden mysql-Anbindung ist hier zu finden: Link.
Folgendes ist geschehen:
- Win7x64
- XAMPP V3.2.2 mit PHP7.0 installiert und eingerichtet
- MongoDB 3.4.1 installiert
- PHP-Treiber für Mongo heruntergeladen. PHPinfo sagt: PHP Version 7.0.13, Architecture: x86, Thread Safty: enabled
- Folgender Treiber wurde also heruntergeladen: php_mongodb-1.2.2-7.0-ts-vc14-x86, die DLL nach ext kopiert und die Zeile "extension=php_mongodb.dll" über "Module Settings" eingefügt.
- MongoDB und XAMPP\PHP sind dem Path hinzugefügt.
- Die PHPinfo sagt nun folgendes (im Internet sinds wesentlich mehr Infos zur MongoDB zu finden in der PHPinfo, warum fehlen diese bei mir? Z.B. fehlen Infos zum host und port usw.):
Code:
mongodb
mongodb support enabled
mongodb version 1.2.2
mongodb stability stable
libmongoc version 1.5.0
libbson version 1.5.0
Directive Local Value Master Value
mongodb.debug no value no value
Code:
C:\Program Files\MongoDB\Server\3.4\bin>mongod
2017-01-01T18:06:59.447+0100 I CONTROL [initandlisten] MongoDB starting : pid=1
516 port=27017 dbpath=C:\data\db\ 64-bit host=*MeinPC*
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] targetMinOS: Windows Vis
ta/Windows Server 2008
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] db version v3.4.1
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] git version: 5e103c4f558
3e2566a45d740225dc250baacfbd7
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] allocator: tcmalloc
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] modules: none
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] build environment:
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] distarch: x86_64
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] target_arch: x86_64
2017-01-01T18:06:59.448+0100 I CONTROL [initandlisten] options: {}
2017-01-01T18:06:59.450+0100 I - [initandlisten] Detected data files in C
:\data\db\ created by the 'wiredTiger' storage engine, so setting the active sto
rage engine to 'wiredTiger'.
2017-01-01T18:06:59.450+0100 I STORAGE [initandlisten] wiredtiger_open config:
create,cache_size=7654M,session_max=20000,eviction=(threads_max=4),config_base=f
alse,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=sn
appy),file_manager=(close_idle_time=100000),checkpoint=(wait=60,log_size=2GB),st
atistics_log=(wait=0),
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten]
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten] ** WARNING: Access contr
ol is not enabled for the database.
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten] ** Read and wri
te access to data and configuration is unrestricted.
2017-01-01T18:06:59.700+0100 I CONTROL [initandlisten]
2017-01-01T18:06:59.700+0100 I CONTROL [initandlisten] Hotfix KB2731284 or late
r update is not installed, will zero-out data files.
2017-01-01T18:06:59.701+0100 I CONTROL [initandlisten]
2017-01-01T18:06:59.812+0100 W FTDC [initandlisten] Failed to initialize Per
formance Counters for FTDC: WindowsPdhError: PdhExpandCounterPathW failed with '
Das angegebene Objekt wurde nicht auf dem Computer gefunden.' for counter '\Memo
ry\Available Bytes'
2017-01-01T18:06:59.812+0100 I FTDC [initandlisten] Initializing full-time d
iagnostic data capture with directory 'C:/data/db/diagnostic.data'
2017-01-01T18:06:59.818+0100 I NETWORK [thread1] waiting for connections on por
t 27017
Code:
C:\Program Files\MongoDB\Server\3.4\bin>mongo
MongoDB shell version v3.4.1
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.1
Server has startup warnings:
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten]
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten] ** WARNING: Access contr
ol is not enabled for the database.
2017-01-01T18:06:59.699+0100 I CONTROL [initandlisten] ** Read and wri
te access to data and configuration is unrestricted.
2017-01-01T18:06:59.700+0100 I CONTROL [initandlisten]
2017-01-01T18:06:59.700+0100 I CONTROL [initandlisten] Hotfix KB2731284 or late
r update is not installed, will zero-out data files.
2017-01-01T18:06:59.701+0100 I CONTROL [initandlisten]
> use datenbank
switched to db datenbank
> show users
{
"_id" : "datenbank.user1",
"user" : "user1",
"db" : "datenbank",
"roles" : [
{
"role" : "readWrite",
"db" : "datenbank"
}
]
}
- Nun versuche ich mit meiner PHP auf die DB zuzugreifen, bitte korrigiert mich, falls hier Fehler enthalten sind:
PHP:
<?php
$db_host = 'localhost';
$db_port = '27017';
$db_name = 'datenbank';
$db_user = 'user1';
$db_pass = 'user1password';
// Verschiedene getestete Varianten zum Verbinden, alle schlagen fehl. Codes alle aus dem Internet
$connection = new MongoClient();
// $connection = new MongoClient("mongodb://localhost");
// $connection = new MongoClient("mongodb:///tmp/mongodb-" . $db_port . ".sock");
// $connection = new MongoClient("mongodb://" . $db_user . ":" . $db_pass . "@/tmp/mongodb-" . $db_port . ".sock/" . $db_name);
// $connection = new MongoClient("mongodb://${username}:${password}@localhost:27017");
if ($connection->connected) {
echo "verbunden";
} else {
echo "nicht verbunden";
}
// connects to dbs "datenbank" | Create new datebases by selecting them
$database = $connection->datenbank;
// select a collection:
$collection = $database->datenbank;
// directly select a database and collection:
// Hinweis: ich kann in MongoDB keine Collection anlegen?! mycoll ist nur eine Idee
//$collection = $connection->datenbank->mycoll;
// Codezeilen um die Datenfelder aus der HTML mit AngularJS auszulesen
$data = json_decode(file_get_contents("php://input"));
$empno = $data->empno;
$fname = $data->fname;
$lname = $data->lname;
$dept = $data->dept;
// Erzeuge Array mit den Datenfeldern
$doc = array(
"emp_no" => $empno,
"first_name" => $fname,
"last_name" => $lname,
"dept_name" => $dept
);
$collection->insert($doc);
// Übergangsweise ein Dummy, falls die Codezeilen oben für das Auslesen nicht funktionieren
$doc2 = array(
"emp_no" => "123",
"first_name" => "John",
"last_name" => "Deere",
"dept_name" => "IT"
);
$collection->insert($doc2);
?>
Die apache-error-log sagt folgende Zeile zum aktuellen Request an:
Code:
[Sun Jan 01 18:33:44.604570 2017] [:error] [pid 7784:tid 1724] [client ::1:54508] PHP Fatal error: Uncaught Error: Class 'MongoClient' not found in C:\\xampp\\htdocs\\company\\mongodb\\test2.php:9\nStack trace:\n#0 {main}\n thrown in C:\\xampp\\htdocs\\company\\mongodb\\test2.php on line 9, referer: http://localhost/company/mongodb/test.html
Jetzt finde ich im Internet, dass mein Versuch, die PHP-Treiber zu installieren, wohl fehlerhaft ist. Aber ich weiß nicht mehr weiter, wie ich das einrichten muss, dass es klappt...
Hoffe ihr wisst Rat.