Domanda

Sto avendo difficoltà a fare una connessione MySQL secondaria (ad un DB esterno separato) nel mio codice. Funziona bene in PHP 5.2.9 offensiva in PHP 5.3.0. Sono consapevole di (almeno alcuni) dei cambiamenti necessari per effettuare le connessioni MySQL successo nella versione più recente di PHP, e sono riusciti prima, quindi non so perché non funziona questa volta.

Ho già dispone di una connessione db aperta a un database locale. Questa funzione sottostante viene quindi utilizzato per effettuare un collegamento aggiuntivo in una directory separata, remota. Il file di configurazione incluso contiene semplicemente i dettagli del database esterni (ospite, utente, passa e nome). Ho controllato e viene incluso in modo corretto.

function connectDP() {
    global $dpConnection;

    include("secondary_db_config.php);
    $dpConnection = mysql_connect($dp_dbHost, $dp_dbUser, $dp_dbPass, true) or DIE("ERROR: Unable to connect to Deployment Platform");
    mysql_select_db($dp_dbName, $dpConnection) or DIE("ERROR 006: Unable to select Deployment Platform Database");
}

Ho poi tentare di rendere questo nuovo collegamento semplicemente chiamando questa funzione esternamente:

connectDP();

Ma quando il caricamento della pagina (in 5.3.0), ricevo il seguente messaggio:

ERROR: Unable to connect to Deployment Platform

sto usando il new_link flag booleano opzionale come il quarto argomento della funzione mysql_connect() e non è ancora funzionante.

Sono stato wracking mio cervello di questa mattina a cercare di capire il motivo per cui questa connessione non funziona (mentre ho fatto qualcosa altrove molto simile ad un secondo database separato che funziona). Qualsiasi aiuto sarebbe apprezzato.

Grazie!

Rich

È stato utile?

Soluzione

Dal PHP 5.3 che utilizza il proprio driver MySQL (mysqlnd) per impostazione predefinita, al posto del libmysqlclient. A seconda della piattaforma non può leggere i valori di default dal file di configurazione di MySQL (ad es. /etc/mysql/my.cnf). È necessario modificare php.ini e specificare i valori predefiniti per l'estensione (s) si utilizza (mysql, mysqli, DOP). Per esempio in Debian è necessario specificare il percorso di presa (ad es. /var/run/mysqld/mysqld.sock) te stesso nel file INI. Basta passare attraverso il file INI e specificare le opzioni mancante e dovrebbe funzionare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top