PHP und MySQL kommunizieren nicht


9

Ich bin zu dem Schluss gekommen, dass meine PHP-Installation und meine MySQL-Installation nicht miteinander auskommen. Ich arbeite daran, meine erste Webseite zu erstellen, die MySQL für Inhalte verwendet, aber nach zwei Tagen, Manpages, Online-Dokumentation und Dutzenden von Tutorials kann ich den PHP / MySQL-Teil einfach nicht zum Laufen bringen. Ich habe einen etablierten Heimwebserver (ich bin der einzige Administrator / Benutzer), der Apache ausführt und meine Webseiten hostet. Ich habe MySQL installiert und konnte eine Datenbank über Terminal erstellen und abfragen. Ich habe PHP installiert und kann Echo verwenden, um Text in das Dokument zu drucken. Wenn ich jedoch mit MySQL arbeite, ändert sich alles…

Ich habe eine Seite, die Initialisierungsmaterial enthält. enthält einige Absätze von fest codiertem HTML und dann PHP-Code für den Zugriff auf MySQL. Als ich die Seite zum ersten Mal geladen habe, war alles, was daraus resultierte, eine leere Seite. Ich habe den PHP-Abschnitt auskommentiert und neu geladen, um zu bestätigen, dass der einfache HTML-Code immer noch funktioniert, was auch der Fall war. Daher verhinderte ein Teil von PHP, dass eine Seite jemals geladen wurde.

Um mit der Fehlerbehebung bei meinem Code zu beginnen, habe ich den gesamten PHP-Code kommentiert, mit Ausnahme des folgenden Codes für die Serververbindung, der aus verschiedenen Tutorials angepasst wurde:

<?
echo("<p>PHP is working</p>"); 
$ses = mysql_connect("localhost","username","password");
if(!$ses){
 echo("<p>Connection to content server failed.</p>");
 exit();
}
echo("<p>Database Connected</p>");
?>

Wenn die Seite geladen wird, wird zusätzlich zu einem Absatz mit der Aufschrift „PHP funktioniert“ der beginnende HTML-Code geladen, es wird jedoch weder die Fehler- noch die Erfolgsmeldung angezeigt. Ich habe die If-Struktur aus dem Code entfernt - so dass nur noch zwei Echos und mysql_connect übrig waren - und das gleiche Ergebnis erhalten.

Es scheint, dass die Funktion mysql_connect dazu führt, dass der Server den Code nicht mehr lädt, wenn er ausgeführt wird, aber ich habe keine Ideen, wie ich ihn beheben kann. Für den Datensatz: Ich habe die Datei php.ini so geändert, dass sie die Zeile "connection = msql.so" enthält, und ich verwende MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Außerdem wurden sowohl mein Router als auch mein Modem so konfiguriert, dass Port 3306 an den Server weitergeleitet wird - obwohl ich nicht sehe, wie dies erforderlich sein sollte - und mein MySQL-Benutzername und mein Kennwort wurden dreimal überprüft und sind mit denen identisch, die ich erfolgreich verwende im Terminal.

Was vermisse ich?


1
Ersetzen Sie 'Benutzername' und Passwort durch den richtigen Benutzernamen (wahrscheinlich root) und Passwort
Tachyons

2
Ja, das habe ich gemacht. Ich dachte einfach nicht, dass es eine gute Idee wäre, den Benutzernamen und das Passwort ins Forum zu werfen. Wie ich am Ende sagte, habe ich den Benutzernamen und das Passwort VIELE Male überprüft, um sicherzustellen, dass sie mit dem übereinstimmen, was ich zum erfolgreichen Erstellen, Zugreifen und Bearbeiten der Datenbank über Terminal verwende.
Casey Hungler

Ich habe auch versucht, localhost durch 127.0.0.1 sowie die lokalen und globalen IP-Adressen des Servers zu ersetzen, aber keine davon hat einen Unterschied gemacht.
Casey Hungler

1
Hast du installiert php5-mysql?
Laurent

Ich bin mir ziemlich sicher, aber ich werde es noch einmal versuchen.
Casey Hungler

Antworten:


9

Alles sieht in Ordnung aus, daher denke ich, dass Ihre Installation nicht abgeschlossen ist. Damit MySQL und PHP kommunizieren können, müssen Sie das php5-mysql Paket installieren :

sudo apt-get install php5-mysql

NB: Ich musste den Computer neu starten, bevor dies funktionieren würde.
user124384

3

Installieren Sie das php5-mysqlPaket und verwenden Sie mysqli_connect anstelle von mysql_connect


Danke, jemand anderes hat das auch vorgeschlagen, und es hat funktioniert! Ich bin allerdings neugierig, dass ich bei meinen Suchanfragen auf Dinge über Mysqli gestoßen bin (und PDO war normalerweise auch dabei). Was ist das? Was macht es besser als normales MySQL?
Casey Hungler

MySQLi ist eine verbesserte Version.
Eule

Soweit ich weiß, sollten Sie mysqli verwenden, wie es vom PHP-Team empfohlen wird, und mysql_connect befindet sich nicht mehr in der Entwicklung, sondern nur noch in der Wartung. Ich denke, mysql_connect akzeptiert beispielsweise keine vorbereiteten Anweisungen und viele andere Dinge.
Laurent


1
sudo apt-get install php5-mysql

Finden Sie die Tomcat-Version von /etc/init.d/. Es sollte eine Datei mit dem Namen tomcat7 geben, daher ist 7 die Version

sudo service tomcat7 stop 
sudo service tomcat7 start

Manchmal hilft der Neustart des Computers beim Sortieren anderer Probleme. Vergessen Sie nach dem Neustart nicht, Folgendes auszuführen:

sudo service tomcat7 start 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.