2016-03-28 28 views
0

Ich Setup vagrant mit MySQL-Server und versuchen, die PHP-Website zur Verwendung der Localhost DB und läuft in Probleme (Sowohl Code und MySQL sind auf der gleichen Vagrant VM). Ich habe jedoch den Zugriff über Sequel Pro eingerichtet und kann mit demselben Benutzer auf die Datenbank zugreifen und Abfragen ausführen. Auf der Website sind die Abfragen nicht abgeschlossen.PHP/Vagrant - Host Zugriff auf Host-DB

MySQL:

mysql> select db,host,user from mysql.db; 
+-----+-----------+------+ 
| db | host  | user | 
+-----+-----------+------+ 
| ojs | localhost | ojs | 
| ojs | localhost | ojs2 | 
| ojs | localhost | root | 
+-----+-----------+------+ 
3 rows in set (0.00 sec) 

So 3 Benutzer DB zugeordnet ist - das Leben leichter zu machen, habe ich root sicher, dass alle Berechtigungen Y waren zu machen.

In meinem /etc/mysql/my.cnf bemerkte ich aus skip-internal-locking und versuchte entweder bind-address oder setzen Sie sich auf Kommentar zu 0.0.0.0

Wenn ich eine Abfrage aus dem Browser ausgeführt werden versuchen (wie einen Benutzer validieren). Ich sehe in /var/log/mysql/mysql.log, die letzte Abfrage ist:

160328 23:00:32 127 Connect [email protected] on ojs 
      127 Query SELECT `User`.`id`, `User`.`email`, `User`.`fname`, `User`.`lname`, `User`.`default_phone`, `User`.`default_ext`, `User`.`password`, `User`.`datecreated_ts`, `User`.`lastlogin_ts`, `User`.`last_deliveryaddress_id`, `User`.`last_billingaddress_id`, `User`.`auth_level`, `User`.`no_radio_email` FROM `User` WHERE `User`.`email` = '[email protected]' AND `User`.`password` = '5f4dcc3b5aa765d61d8327deb882cf99' 
      127 Quit 

So sieht es aus wie die Abfrage ausgeführt wird, und ich überprüft, dass meine mysql eine Verbindung herstellt.

Ich habe seit zwei Tagen versucht und ich fange an, dass ich etwas Grundlegendes vermisse. Kann mir bitte jemand in die richtige Richtung zeigen?

Antwort

0

Ich glaube nicht, das Problem zu MySQL oder Vagrant verwendet ist, kann es von Ihrem PHP-Code kommt (haben Sie versucht, die Rückgabedaten aus der Abfrage? Abzuladen und sterben)

Sowohl Ihr Webserver und MySQL-Server auf dem gleichen Server so "Bind-Adresse" muss nicht geändert werden. Es wird nicht beeinflussen.

Sie haben ein Protokoll der Abfrage an MySQL gesendet, so dass es kein Problem über die Verbindung zwischen Ihrem Web und MySQL gibt.

Um das Problem leichter zu erkennen Ich denke, Sie sollten eine neue PHP-Datei zum Testen Ihrer db, etwas wie test_db.php erstellen, aktivieren Sie die Fehlerberichte und display_errors. sehen und was passiert

Ich bemerke, Ihre Frage über Auswahl für die Authentifizierung ist, so haben Sie vielleicht Probleme mit der Authentifizierung, überprüfen Sie die Sitzungskonfiguration, Sitzungsbeginn, Sitzung zerstören usw.

Hoffe, dass es Ihnen helfen!

+0

PHP stellt eine Verbindung zur Datenbank her, wenn es sich außerhalb des Servers befindet (d. H. Ich kann eine Verbindung zu unserer Produktionsdatenbank herstellen). Es gibt keine Fehler im Fehlerprotokoll von PHP und das Dumping von Abfragen gibt immer 'false' zurück, als würde es die Datenbank nicht finden. Ich werde aber weiter schauen. Vielen Dank. – Bardworx

+0

Ich empfehle dringend, Sie schreiben und separate Datei verwendet PDO, um die Verbindung zu testen, und überprüfen Sie das Protokoll von MySQL basierend auf Ihrer Abfrage, die Sie an die Testdatei übergeben. Überprüfen Sie auch die Groß- und Kleinschreibung Ihrer Abfrage. Wenn dies das Problem ist, ändern Sie Ihre my.cnf im Abschnitt [mysqld] fügen Sie diese Zeile hinzu: lower_case_table_names = 2, und setzen Sie die Bindungsadresse wieder auf 0.0.0.0, um zu testen Von Sequel Pro können Sie die gleiche Abfrage mit dem gleichen Benutzer ausführen, so dass die Gewährung von Privilegien in Ordnung ist. Und zuletzt überprüfen Sie die Art, wie Sie die Verbindung von PHP initiiert haben (DB-Name, Host, Port). Viel Glück! Ich schätze, ich konnte dir nicht viel helfen. –

Verwandte Themen