PHP y MySQL no se comunican

9

He llegado a la conclusión de que mi instalación de PHP y mi instalación de MySQL no se llevan bien; Estoy trabajando en crear mi primera página web que usa MySQL para contenido, pero después de dos días, páginas de manual, documentación en línea y docenas de tutoriales, simplemente no puedo hacer que la parte PHP / MySQL funcione. Tengo un servidor web casero establecido (soy el único administrador / usuario) que ejecuta Apache y aloja mis páginas web. Tengo instalado MySQL y pude crear y consultar una base de datos a través de Terminal. Tengo PHP instalado y puedo usar echo para imprimir texto en el documento. Sin embargo, cuando trabajo con MySQL, todo cambia ...

Tengo una página que contiene cosas de inicialización. contiene algunos párrafos de código HTML y luego código PHP para acceder a MySQL. Cuando cargué la página por primera vez, todo lo que resultó fue una página en blanco. Comenté la sección de PHP y la volví a cargar para confirmar que el HTML simple todavía funcionaba, lo que sí funcionó. Por lo tanto, alguna parte de PHP impedía que alguna página se cargara.

Para comenzar a solucionar mi código, dejé todo el código PHP comentado, excepto el siguiente código para la conexión del servidor, que está adaptado de varios tutoriales 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>");
?>

Cuando se carga la página, se carga el HTML inicial además de un párrafo que dice "PHP está funcionando", pero no aparece el mensaje de error o de éxito. Eliminé la estructura If del código, de modo que solo quedaban dos ecos y mysql_connect, y obtuve el mismo resultado.

Parece que la función mysql_connect está causando que el servidor deje de cargar el código cuando se ejecuta, pero no tengo ideas sobre cómo solucionarlo. Para el registro: he modificado el archivo php.ini para incluir la línea "conexión = msql.so", y estoy usando MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Además, tanto mi enrutador como mi módem se han configurado para reenviar el puerto 3306 al servidor, aunque no veo cómo debería ser necesario, y mi nombre de usuario y contraseña de MySQL se han verificado tres veces y son idénticos a los que uso con éxito en la terminal.

¿Qué me estoy perdiendo?

Casey Hungler
fuente
1
Reemplace 'nombre de usuario' y contraseña con el nombre de usuario correcto (probablemente root) y la contraseña
Tachyons
2
Sí, hice eso Simplemente no pensé que sería una buena idea tirar el nombre de usuario y la contraseña al foro. Como dije al final, he verificado el nombre de usuario y la contraseña MUCHAS veces para asegurarme de que coincida con lo que uso para crear, acceder y editar con éxito la base de datos a través de la Terminal.
Casey Hungler
También intenté reemplazar localhost con 127.0.0.1, así como las direcciones IP locales y globales del servidor, pero ninguna de ellas marcó la diferencia.
Casey Hungler
1
¿Instalaste php5-mysql?
Laurent
Estoy bastante seguro, pero lo intentaré de nuevo.
Casey Hungler

Respuestas:

9

Todo se ve bien, así que creo que su instalación no está completa. Para que mysql y php se comuniquen, debe instalar el php5-mysql paquete:

sudo apt-get install php5-mysql
Laurent
fuente
NB: tuve que reiniciar la computadora antes de que esto funcionara.
user124384
3

Instale el php5-mysqlpaquete y use mysqli_connect en lugar de mysql_connect

Taquiones
fuente
Gracias, alguien más sugirió eso también, ¡y funcionó! Sin embargo, tengo curiosidad, en mis búsquedas me encontré con cosas sobre mysqli (y PDO generalmente también estaba allí), ¿qué es? ¿Qué lo hace mejor que MySQL regular?
Casey Hungler
MySQLi es una versión mejorada.
búho
Por lo que sé, debe usar mysqli, ya que es recomendado por el equipo de php y mysql_connect ya no está en desarrollo, solo mantenimiento. Creo que mysql_connect no acepta declaraciones preparadas, por ejemplo, y muchas otras cosas.
Laurent
1
sudo apt-get install php5-mysql

Encuentra la versión de Tomcat de /etc/init.d/. Debe haber un archivo con el nombre tomcat7, por lo tanto, 7 es la versión

sudo service tomcat7 stop 
sudo service tomcat7 start

A veces, el reinicio de la máquina ayuda a ordenar otros problemas. Después de reiniciar, no olvides ejecutar:

sudo service tomcat7 start 
usuario144880
fuente