J'ai mis le répertoire PushChatServer dans le dossier htdocs et créé la base de données puschat, essayez d'exécuter @ " http: //localhost/PushChatServer/api/test/database.php "
Ensuite, j'ai eu l'exception suivante.
Je veux faire la même chose pour expliquer ce lien http://www.raywenderlich.com/32963/Apple-Push-notification-services-in-ios-6-tutorial-part-2
J'ai fait tout ça mais j'ai eu cette exception
Impossible de se connecter à la base de données. Raison: exception "PDOException" avec le message "SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type" dans /Applications/MAMP/htdocs/PushChatServer/api/test/database.php:17 Trace de pile: # 0/Applications/MAMP /htdocs/PushChatServer/api/test/database.php(17): PDO -> __ construct ('mysql: Host = loca ...', 'root', 'root', Array) # 1 {main}
Test rapide (exécuté dans Shell):
php -r "new PDO('mysql:hostname=localhost;dbname=test', 'username', 'password');"
SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type signifie que php ne peut pas trouver le fichier mysql.default_socket. Corrigez-le en modifiant le fichier php.ini. Sur Mac, c'est mysql.default_socket = /tmp/mysql.sock (Voir PHP - La connexion MySQL ne fonctionne pas: 2002 Aucun fichier ou répertoire de ce type )
SQLSTATE [HY000] [1044] Accès refusé à l'utilisateur 'username' @ 'localhost' FÉLICITATIONS! Vous disposez maintenant du paramètre mysql.default_socket correct. Corrigez votre nom d'utilisateur/nom d'utilisateur/mot de passe.
Voir aussi Erreur lors de la création d'une connexion à PDO en PHP
Vous devez changer l'hôte de localhost
à 127.0.0.1
Laravel 4: Dans votre app/config/database.php
essayez de changer l'hôte de localhost
en 127.0.0.1
Laravel 5: Dans le .env
fichier, modifier DB_Host
de localhost
à 127.0.0.1
Source: PDOException SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type
J'ai eu la même erreur en utilisant PHP 5.6.30 (macOS Sierra) avec le code PDO simple comme:
$pdo = new PDO('mysql:Host=localhost;dbname=db_php', 'root', '');
Et j'ai reçu le même message d'erreur. Pour corriger, j'ai changé "localhost" pour IP (loopback) "127.0.0.1" dans mon code:
$pdo = new PDO('mysql:Host=127.0.0.1;dbname=db_php', 'root', '');
Pour tester la connexion:
$ php -r "new PDO('mysql:Host=127.0.0.1;dbname=db_php', 'root', '');"
Ce travail est pour moi!
Redémarrez votre base de données et votre serveur Web local:
Ça devrait marcher!
J'ai eu la même erreur pour Mysql PDO, ce code fonctionne pour moi!
<?php
$dsn = 'mysql:Host=127.0.0.1;dbname=testdb';
$username = 'username';
$password = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dbh = new PDO($dsn, $username, $password, $options);
?>
a obtenu ce code de: http://php.net/manual/en/ref.pdo-mysql.connection.php
Je ne sais pas si cela fonctionnera pour vous; mais j'utilise CakePHP, et j'obtiens cette erreur chaque fois que j'oublie de mettre le numéro de port à la fin de l'hôte.
J'espère que cela t'aides!
Avant
'test' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'Host' => 'localhost',
'username' => 'root',
'password' => 'root',
'database' => 'mylogin',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
'log' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
'url' => env('DATABASE_TEST_URL', null),
]
Après
'test' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'Host' => 'localhost:8080',
'username' => 'root',
'password' => 'root',
'database' => 'mylogin',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
'quoteIdentifiers' => false,
'log' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
'url' => env('DATABASE_TEST_URL', null),
]
PDO traite tout particulièrement les hôtes locaux:
De http://php.net/manual/en/ref.pdo-mysql.connection.php :
Remarque: Unix uniquement: lorsque le nom d'hôte est défini sur "localhost", la connexion au serveur est établie via une socket de domaine. Si PDO_MYSQL est compilé avec libmysqlclient, l'emplacement du fichier socket se trouve à l'emplacement compilé dans libmysqlclient. Si PDO_MYSQL est compilé avec mysqlnd, un socket par défaut peut être défini via le paramètre pdo_mysql.default_socket.
C'est pourquoi PDO et mysql_connect donneront un comportement différent pour localhost.
Donc, si vous souhaitez utiliser une connexion TCP avec PDO, n'utilisez jamais localhost mais 127.0.0.1.
Exécutez la commande suivante dans Shell, je pense que cela vous aidera.
php artisan cache:clear
php artisan config:clear
php artisan view:clear
Je viens de rencontrer ce même problème et le problème est le mot de passe. Dans le didacticiel, l'auteur répertorie le mot de passe comme suit:
"d]682\#%yl1nb3"
Donc, selon la suggestion donnée par @ Marki555, j'ai regardé dans le fichier de configuration - api_config.php. et le mot de passe qui y figure est:
"d]682\#%yI1nb3"
Le `` I '' majuscule est la cause du problème car le mot de passe que vous définissez pour l'utilisateur sur la base de données a le mot de passe avec le l minuscule mais il recherche vraiment le majuscule I. Après avoir changé le mot de passe de l'utilisateur pushchat pour avoir un i majuscule , ça a marché!