Ocorreu um erro ao processar sua solicitação
SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe
Obtendo o erro acima, por favor, alguém me forneça solução para resolver isso.
Ocorreu um erro ao processar sua solicitação
SQLSTATE [HY000] [2002] Esse arquivo ou diretório não existe
Obtendo o erro acima, por favor, alguém me forneça solução para resolver isso.
Respostas:
Eu tive o mesmo problema ao instalar o Magento 2.1.0 com PHP 7.0.13.
Eu poderia resolver esse problema definindo o nome do host do banco de dados como 127.0.0.1 em vez de localhost .
Se o seu servidor listado app/etc/local.xml
estiver em localhost
e esse erro aparecer no log de erros do Magento, mas o Magento ainda estiver funcionando, o mysql foi reiniciado e o soquete /tmp/mysql.sock
ou qualquer arquivo de soquete configurado my.cnf
temporariamente desapareceu.
Como está faltando, o conector mysql do PDO relata SQLSTATE[HY000] [2002] No such file or directory
Se você está recebendo esse erro continuamente e não tem acesso ao Magento além da página Erro de exceção, o mysql travou completamente e você precisa do seu provedor de hospedagem para descobrir o porquê e reiniciar o mysql.
Isso também pode acontecer se o sistema de arquivos estiver cheio ...
o mysqld não estará funcionando normalmente e estaria no modo "seguro"
HTH SNS
Eu tive esse mesmo problema e usei abaixo para selecionar qual php deve ser usado. /usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Veja documentos oficiais: SQLSTATE [HY000] [2002] Nenhum arquivo ou diretório
Isso geralmente é causado por uma instância diferente do PHP sendo usada pela linha de comando do PHP em comparação ao servidor da web. Em particular, mysql.sock
pode ser configurado incorretamente, se este for o caso.
Para determinar se você está usando ou não uma instância do PHP:
Digite o seguinte comando:
php -i | grep 'php.ini'
Isso determina as configurações usadas pela CLI (interface da linha de comandos) do PHP. Observe onde php.ini
está localizado.
phpinfo.php
no seu servidor web.phpinfo.php
com o de php -i
.phpinfo.php
mostra o php.ini
arquivo usado pelo seu servidor web. Se for diferente do que está no PHP php.ini
, você deve tornar todas as configurações de PHP consistentes para a CLI do PHP e o servidor da web.
Para detalhes adicionais, consulte a documentação fornecida com o servidor da web.
Eu tenho várias versões do PHP disponíveis para mim através do shell - digitando php e pressionando tab mostra quais os que meu preenchimento automático conhece.
Para mim, o PHP 5.4, 5.5 e 5.6 estavam funcionando bem, mas o PHP 7 não estava encontrando o mysql.sock e estava travando com o "SQLSTATE [HY000] [2002] Nenhum erro de arquivo ou diretório" discutido nesta pergunta .
# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-5.6.20
# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>" | php-7.0.8
Para ver onde seu servidor mysql possui seu soquete, use este comando:
cat /etc/mysql/my.cnf | grep socket
No meu caso, com o Percona Mysql instalado no meu sistema vagrant, o arquivo de soquete de meia estava aqui:
/var/run/mysqld/mysqld.sock
(observe que é chamado mysqld e não simplesmente mysql )
Eu tenho várias versões do php para escolher e esses comandos me mostraram quais tinham problemas e quais eram bons:
A resposta para mim foi simplesmente incluir o código no script do provedor vagrant para criar um link simbólico entre /tmp/mysql.sock e /var/run/mysqld/mysqld.sock
if [ ! -L /tmp/mysql.sock ]; then
echo "Creating symbolic link for php 7 to connect to mysql.sock"
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi
Com o novo link simbólico, o script de teste fornecido anteriormente agora funciona perfeitamente para todas as versões do PHP e eu posso usar o host local no meu código, em vez de precisar fornecer o endereço IP 127.0.0.1 .
Parece estar com problema de versão PHP errado, você precisa selecionar qual php deve ser usado para executar o comando da seguinte maneira:
/Applications/MAMP/bin/php/php7.1.20/bin/php bin/magento setup:upgrade
PS: A amostra acima é para MAC, você pode fazê-lo de maneira semelhante para Windows ou Unix também.