PHP e MySQL non comunicano


9

Sono giunto alla conclusione che la mia installazione di PHP e la mia installazione di MySQL non vanno d'accordo; Sto lavorando per creare la mia prima pagina Web che utilizza MySQL per i contenuti, ma dopo due giorni, pagine man, documentazione online e dozzine di tutorial, non riesco proprio a far funzionare la parte PHP / MySQL. Ho un server Web domestico stabilito (sono l'unico amministratore / utente) che esegue Apache e ospita le mie pagine Web. Ho installato MySQL ed è stato in grado di creare e interrogare un database tramite Terminal. Ho installato PHP e posso usare l'eco per stampare testo sul documento. Quando lavoro con MySQL, tuttavia, tutto cambia ...

Ho una pagina che contiene materiale di inizializzazione in. contiene alcuni paragrafi di HTML hardcoded e quindi codice PHP per accedere a MySQL. Quando ho caricato la pagina per la prima volta, tutto ciò che è risultato è stata una pagina vuota. Ho commentato la sezione PHP e ricaricato per confermare che il semplice HTML funzionava ancora, cosa che ha fatto. Pertanto, alcune parti di PHP impedivano il caricamento di qualsiasi pagina.

Per iniziare la risoluzione dei problemi del mio codice, ho lasciato tutto il codice PHP commentato ad eccezione del seguente codice per la connessione al server, che è adattato da diversi tutorial:

<?
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>");
?>

Quando la pagina viene caricata, viene caricato l'HTML iniziale oltre a un paragrafo che legge "PHP funziona", ma non viene visualizzato il messaggio di errore o di successo. Ho rimosso la struttura If dal codice, in modo che rimanessero solo due echos e mysql_connect, e ho ottenuto lo stesso risultato.

Sembra che la funzione mysql_connect stia causando l'interruzione del caricamento del codice da parte del server quando viene eseguito, ma non ho idea di come risolverlo. Per la cronaca: ho modificato il file php.ini per includere la riga “connection = msql.so” e sto usando MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Inoltre, sia il mio router che il mio modem sono stati configurati per inoltrare la porta 3306 al server - anche se non vedo come dovrebbe essere necessario - e il mio nome utente e password MySQL sono stati controllati tre volte e sono identici a quelli che uso con successo nel terminal.

Cosa mi sto perdendo?


1
Sostituisci "nome utente" e password con nome utente corretto (probabilmente root) e password
Tachyons,

2
Sì, l'ho fatto. Non pensavo che sarebbe stata una buona idea buttare nome utente e password sul forum. Come ho detto alla fine, ho controllato il nome utente e la password MOLTE volte per assicurarmi che corrisponda a quello che uso per creare, accedere e modificare con successo il database tramite Terminal.
Casey Hungler,

Ho anche provato a sostituire localhost con 127.0.0.1 e gli indirizzi IP locali e globali del server, ma nessuno di questi ha fatto la differenza.
Casey Hungler,

1
Hai installato php5-mysql?
laurent

Sono abbastanza sicuro, ma ci proverò di nuovo.
Casey Hungler,

Risposte:


9

Tutto sembra a posto quindi penso che l'installazione non sia completa. Affinché mysql e php comunichino, è necessario installare il php5-mysql pacchetto:

sudo apt-get install php5-mysql

NB: ho dovuto riavviare il computer prima che funzionasse.
user124384

3

Installa il php5-mysqlpacchetto e usa mysqli_connect invece di mysql_connect


Grazie, anche qualcun altro lo ha suggerito, e ha funzionato! Sono curioso però, nelle mie ricerche mi sono imbattuto in cose su mysqli (e di solito c'era anche il PDO), che cos'è? Cosa lo rende migliore del normale mysql?
Casey Hungler,

MySQLi è una versione migliorata.
gufo

Da quello che so, dovresti usare mysqli come raccomandato dal team di php e mysql_connect non è più in fase di sviluppo, ma solo manutenzione. Penso che mysql_connect non accetti dichiarazioni preparate per esempio e molte altre cose.
laurent


1
sudo apt-get install php5-mysql

Trova la versione Tomcat da /etc/init.d/. Dovrebbe esserci un file con il nome tomcat7, quindi 7 è la versione

sudo service tomcat7 stop 
sudo service tomcat7 start

A volte il riavvio della macchina aiuta a ordinare altri problemi. Dopo il riavvio, non dimenticare di eseguire:

sudo service tomcat7 start 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.