PHP - MYSQL - test serveur de base de données
J'apprends le PHP, MYSQL et d'essayer de créer une base de données.
Je suis en suivant ce tutoriel
http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app
Jusqu'à présent, je suis en essais pour voir si le serveur a accès à MySQL. Lorsque j'utilise le code suivant.
?php
class RedeemAPI {
private $db;
//Constructor - open DB connection
function __construct() {
$this->db = new mysqli('localhost', 'username', 'password', 'promos');
$this->db->autocommit(FALSE);
}
//Destructor - close DB connection
function __destruct() {
$this->db->close();
}
//Main method to redeem a code
function redeem() {
//Print all codes in database
$stmt = $this->db->prepare('SELECT id, code, unlock_code, uses_remaining FROM rw_promo_code');
$stmt->execute();
$stmt->bind_result($id, $code, $unlock_code, $uses_remaining);
while ($stmt->fetch()) {
echo "$code has $uses_remaining uses remaining!";
}
$stmt->close();
}
}
//This is the first thing that gets called when this page is loaded
//Creates a new instance of the RedeemAPI class and calls the redeem method
$api = new RedeemAPI;
$api->redeem();
?
J'obtiens l'erreur suivante:
Warning: mysqli::mysqli() [mysqli.mysqli]: [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/user/Sites/promos/index.php on line 8
Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): No such file or directory in /Users/user/Sites/promos/index.php on line 8
Warning: mysqli::autocommit() [mysqli.autocommit]: Couldn't fetch mysqli in /Users/user/Sites/promos/index.php on line 9
Warning: mysqli::prepare() [mysqli.prepare]: Couldn't fetch mysqli in /Users/user/Sites/promos/index.php on line 20
Fatal error: Call to a member function execute() on a non-object in /Users/user/Sites/promos/index.php on line 21
Je n'ai peut-être oublier de l'activer quelque chose?
Elle pourrait expliquer pourquoi je ne peux pas connecter via mon adresse IP pour sequel pro et uniquement à l'adresse 127.0.0.1?
Avez-vous des mysqli installé? Et est-il commencé?
J'aimerais commencer avec un exemple de base.
Hébergé localement? Linux peut être un défi de monter un serveur.
J'ai mysql installé, je l'ai connecté à sequel pro uniquement via mon adresse locale si
Je sais que pour mysql, il peut être lié à la ligne de mysql.default_socket dans le php.fichier ini. Vous devriez vérifier une entrée similaire dans ce fichier
J'aimerais commencer avec un exemple de base.
Hébergé localement? Linux peut être un défi de monter un serveur.
J'ai mysql installé, je l'ai connecté à sequel pro uniquement via mon adresse locale si
Je sais que pour mysql, il peut être lié à la ligne de mysql.default_socket dans le php.fichier ini. Vous devriez vérifier une entrée similaire dans ce fichier
OriginalL'auteur nimbus | 2012-12-13
Vous devez vous connecter pour publier un commentaire.
Il y a deux paramètres à vérifier pour que cela fonctionne (en supposant que vous avez un serveur MySQL installé bien sûr):
Vérifier la valeur de
mysql.default_socket
dans votre configuration de PHP.Vérifier la valeur de
socket
dans votre fichier de configuration de MySQL sous la[mysqld]
tête.Ces valeurs doivent être identiques; s'ils ne le sont pas, changer pour correspondre à l'autre et le redémarrage de service respectif.
mysqli.default_socket
à la place. etpdo_mysql.default_socket
pour pdo. Nous avons pu vérifier cela parphp -i | grep -F .default_socket
OriginalL'auteur Ja͢ck
Serveurs Apache utiliser '127.0.0.1' au lieu de 'localhost'
Comme expliqué par @mingos c'est une problématique commune. Il apparaît 'localhost' ne pointe pas vers la bonne prise au sein du serveur Apache. C'est corrigé en utilisant 127.0.0.1
Il n'en est rien à faire avec apache. Mysql utiliser "localhost via UNIX socket', et '127.0.0.1' via 'TCP/IP'. Afin de préciser le droit chemin de mysql.chaussette " si vous utilisez un 'localhost'. dev.mysql.com/doc/refman/5.6/en/connecting.html#id471316
cela a résolu mon problème
OriginalL'auteur Jonathan
Cela semble être un problème commun, comme googler il donne très peu de résultats. Je l'ai vécu sur mes deux machines linux (ne jamais sous Windows), et à un certain moment, j'ai décidé de simplement utiliser 127.0.0.1 sur tous les serveurs de dev. Fondamentalement, localhost fait de la connexion au serveur MySQL utiliser un socket, mais votre configuration ne pointe pas vers le fichier de socket correctement.
Voici quelques ressources qui pourraient vous être utiles:
http://westsworld.dk/blog/2011/03/problems-connecting-to-unixvarmysqlmysql-sock/ - fondamentalement, ce que @Jack suggère, mais plus en profondeur
Ne peut pas se connecter à MySQL sur Mac -- manque de données mysql.chaussette de fichier - voici comment faire pour localiser votre fichier de socket (pour une raison quelconque, mon php.ini a la voie du mal, et je suppose que votre cas pourrait être similaire).
J'espère que cette aide.
OriginalL'auteur mingos