PHP e MySQL não estão se comunicando

9

Cheguei à conclusão de que minha instalação do PHP e minha instalação do MySQL não estão se dando bem; Estou trabalhando na criação da minha primeira página da Web que usa o MySQL para conteúdo, mas depois de dois dias, páginas de manual, documentação on-line e dezenas de tutoriais, não consigo fazer com que a parte do PHP / MySQL funcione. Eu tenho um servidor web doméstico estabelecido (eu sou o único administrador / usuário) que executa o Apache e hospeda minhas páginas da web. Eu tenho o MySQL instalado e consegui criar e consultar um banco de dados através do Terminal. Eu tenho o PHP instalado e posso usar o eco para imprimir texto no documento. Quando eu trabalho com o MySQL, no entanto, tudo muda ...

Eu tenho uma página que contém itens de inicialização. contém alguns parágrafos de HTML codificado e, em seguida, código PHP para acessar o MySQL. Quando carreguei a página, tudo o que resultou foi uma página em branco. Comentei a seção PHP e recarreguei para confirmar que o HTML simples ainda funcionava, o que funcionou. Portanto, parte do PHP estava impedindo o carregamento de qualquer página.

Para começar a solucionar problemas do meu código, deixei todo o código PHP comentado, exceto o seguinte código para a conexão do servidor, que é adaptado de vários tutoriais diferentes:

<?
echo("<p>PHP is working</p>"); 
$ses = mysql_connect("localhost","username","password");
if(!$ses){
 echo("<p>Connection to content server failed.</p>");
 exit();
}
echo("<p>Database Connected</p>");
?>

Quando a página é carregada, o HTML inicial carrega, além de um parágrafo que lê "PHP está funcionando", mas nem a mensagem de falha ou sucesso aparece. Eu removi a estrutura If do código - para que apenas dois ecos e o mysql_connect permanecessem - e obtivemos o mesmo resultado.

Parece que o recurso mysql_connect está fazendo com que o servidor pare de carregar o código quando ele é executado, mas estou sem ideias de como corrigi-lo. Para constar: modifiquei o arquivo php.ini para incluir a linha "connection = msql.so" e estou usando o MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Além disso, meu roteador e modem foram configurados para encaminhar a porta 3306 para o servidor - embora eu não veja como isso seja necessário - e meu nome de usuário e senha do MySQL foram verificados três vezes e são idênticos aos que eu uso com sucesso no terminal.

o que estou perdendo?

Casey Hungler
fonte
11
Substitua 'nome de usuário' e senha pelo nome de usuário correto (provavelmente root) e senha
Tachyons
2
Sim, eu fiz isso. Eu simplesmente não achei que seria uma boa ideia jogar o nome de usuário e a senha no fórum. Como eu disse no final, verifiquei o nome de usuário e a senha MUITAS vezes para garantir que ele corresponda ao que eu uso para criar, acessar e editar com êxito o banco de dados através do Terminal.
Casey Hungler
Também tentei substituir o host local por 127.0.0.1, bem como os endereços IP locais e globais do servidor, mas nenhum deles também fez diferença.
Casey Hungler
11
Você instalou php5-mysql?
Laurent
Tenho certeza, mas vou tentar novamente.
Casey Hungler

Respostas:

9

Tudo parece bom, então acho que sua instalação não está completa. Para que o mysql e o php se comuniquem, você precisa instalar o php5-mysql pacote:

sudo apt-get install php5-mysql
Laurent
fonte
NB: Eu tive que reiniciar o computador antes que isso funcionasse.
User124384
3

Instale o php5-mysqlpacote e use mysqli_connect em vez de mysql_connect

Tachyons
fonte
Obrigado, alguém sugeriu isso também, e funcionou! Estou curioso, porém, nas minhas pesquisas, deparei com coisas sobre o mysqli (e o DOP também estava lá também), o que é? O que o torna melhor que o mysql comum?
Casey Hungler
MySQLi é uma versão melhorada.
Owl:
Pelo que sei, você deve usar o mysqli, como recomendado pela equipe php, e o mysql_connect não está mais em desenvolvimento, apenas em manutenção. Eu acho que o mysql_connect não aceita instruções preparadas, por exemplo, e muitas outras coisas.
Laurent
1
sudo apt-get install php5-mysql

Encontre a versão do Tomcat em /etc/init.d/. Deve haver um arquivo com o nome tomcat7, portanto 7 é a versão

sudo service tomcat7 stop 
sudo service tomcat7 start

Às vezes, a reinicialização da máquina ajuda a classificar outros problemas. Após a reinicialização, não se esqueça de executar:

sudo service tomcat7 start 
user144880
fonte