Cheira a sua instalação do mysql. O mysql está sendo executado como um serviço? Sua conta root realmente não tem senha? Quais extensões do mysql são carregadas no php.ini? Há um php_mssql.dll
que pode ser facilmente confundido com php_msql.dll
, mas tenho certeza de que php_mssql.dll
é apenas para janelas.
Você editou seu arquivo php.ini /opt/lampp/php/php.ini? Isso pode ajudar na depuração:
error_reporting = E_ALL & ~E_NOTICE
display_errors = On
display_startup_errors = On ;but you'll want to turn this off soon ;)
mysql.trace_mode = On
Também vale a pena olhar, o número da porta usado. $ MYSQL_TCP_PORT está definido? Como sobre a entrada mysql-tcp em / etc / services?
Atualização: Você já tentou verificar o valor de retorno da função de conexão? Eu estou querendo saber se o seu exemplo é muito pequeno. Tente fazer com que seu teste seja assim:
<?php
$db = mysql_connect("localhost","root","myrootpassword");
if (!$db) {
die('Could not connect: ' . mysql_error());
}
else {
$result = mysql_query("show databases");
print "
<h1>Test executed from ". $_SERVER['SCRIPT_NAME']. "</h1>
\n";
print "Script name: ". $_SERVER['SCRIPT_FILENAME'] ." <hr>\n";
while ($line = mysql_fetch_array($result))
{
print "$line[0]<br>\n";
}
}
mysql_close($db);
?>
Este exemplo garante que você envie algo que se pareça com HTML, se o script falhar ou não. Consegui reproduzir os seus sintomas sem definir a senha do root, portanto, aparentemente, não é apenas uma boa prática, mas é necessário que ela não seja vazia.
Consegui transformar seu problema em uma solução por
- Definindo a senha do root
- retornando algo do script ao conectar
Em vez de passar "" como a senha de root, se realmente não for nada, tente usar mysql.default_password como senha. O valor padrão para mysql.default_password é NULL.