Pb avec la fonction mysqli et bdd chez 1and1

Eléphant du PHP | 331 Messages

12 sept. 2010, 00:46

Bonsoir,

Je cherche à faire une connexion à BDD hébergée sur un serveur dédié 1and1.
Le hostname (DB_HOST) qui m'est indiqué par l'hébergeur est le suivant : localhost:/tmp/mysql5.sock

La fonction que j'utilise (récupérée d'un script) est aisni faite :
function connect()
	{
		self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE);
		
		if (mysqli_connect_errno()) {
			$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
		}
		
		return self::$instance;
	}
Et l'erreur retournée par le navigateur en testant est la suivante :
Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 'localhost:/tmp/mysql5.sock' (1) in /homepages/18/d302109344/htdocs/sportwif/ebplo/EasyAPNS/php/classes/class_DbConnect.php on line 176
Connect failed: Unknown MySQL server host 'localhost:/tmp/mysql5.sock' (1) There seems to have been a slight problem with our database, please try again later.
Savez-vous ce qui coince ?

Merci !

Jérôme

ViPHP
ViPHP | 5462 Messages

12 sept. 2010, 05:36

$this->DB_HOST est égale a quoi ?

Eléphant du PHP | 331 Messages

12 sept. 2010, 08:45

function __construct()
	{
		$this->DB_HOST     = "localhost:/tmp/mysql5.sock";
		$this->DB_USERNAME = "dbo3413xxxxx";
		$this->DB_PASSWORD = "xxxxxxx";
		$this->DB_DATABASE = "db341xxxxxxx";
		

	}
C'est le paramétrage donné par 1and1 pour ma BDD sur mon serveur dédié

ViPHP
ViPHP | 5462 Messages

12 sept. 2010, 18:01

met juste localhost, tu peux lui dire sur quel socket se connecter avec le 5eme paramètre (si il est diffèrent de mysql.default_socket)
localhost:/tmp/mysql5.sock
veux dire :
host = localhost
socket = /tmp/mysql5.sock

:wink:

Eléphant du PHP | 331 Messages

12 sept. 2010, 19:14

C'est bien ce que j'avais un peu en tête mais je ne sais pas comment le rédiger.
J'ai fait ça mais ce n'est pas bon :
		$this->DB_HOST     = "localhost";
		$this->DB_SOCKET   = "/tmp/mysql5.sock";

	*/
	function connect()
	{
		self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE, $this->DB_SOCKET);
		
		if (mysqli_connect_errno()) {
			$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
		}
		
		return self::$instance;
	}
Je le spécifie comment ce Socket ?

Merci !

ViPHP
ViPHP | 5462 Messages

12 sept. 2010, 19:16

Je le spécifie comment ce Socket ?

Merci !
http://www.php.net/manual/fr/mysqli.connect.php
:wink:

il est diffèrent de celui par défaut ?

Eléphant du PHP | 331 Messages

12 sept. 2010, 19:30

Alors ça j'avais déjà regardé mais il me semble bien respecter l'ordre des paramètres.
il est diffèrent de celui par défaut ?
Oui, puisque moi c'est "/tmp/mysql5.sock" au lieu de ""/tmp/mysql.sock" (enfin si j'ai bien tout compris ...)

ViPHP
ViPHP | 5462 Messages

12 sept. 2010, 19:32

Alors ça j'avais déjà regardé mais il me semble bien respecter l'ordre des paramètres.
y'a le paramètre port avant :wink:
donc sois 3306 sois null

Eléphant du PHP | 331 Messages

12 sept. 2010, 19:36

BINGO !!!! Il me manquait le port !

Comme ça c'est beaucoup mieux :
	function __construct()
	{
		
		$this->DB_HOST     = "localhost";//infongd16389:3316     localhost:/tmp/mysql5.sock
		$this->DB_SOCKET   = "/tmp/mysql5.sock";
		$this->DB_PORT     = "3316";
		
	/**
	* Connect to the Database.
	*
	*/
	function connect()
	{
		self::$instance = new mysqli($this->DB_HOST, $this->DB_USERNAME, $this->DB_PASSWORD, $this->DB_DATABASE, $this->DB_PORT, $this->DB_SOCKET);
		
		if (mysqli_connect_errno()) {
			$this->raise_error(printf("Connect failed: %s\n", mysqli_connect_error()));
		}
		
		return self::$instance;
	}
Merci beaucoup pour ton aide ! :D

Jérôme