Foros del Web » Programando para Internet » PHP »

Servidor Local PHP/MySQL

Estas en el tema de Servidor Local PHP/MySQL en el foro de PHP en Foros del Web. Hola amigos: Tengo tres problemas que creo son sencillos, pero no los he podido solucionar. He instalado Wamp (WampServer 2.0) en mi pc para tener ...
  #1 (permalink)  
Antiguo 03/08/2009, 17:18
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Servidor Local PHP/MySQL

Hola amigos:
Tengo tres problemas que creo son sencillos, pero no los he podido solucionar.
He instalado Wamp (WampServer 2.0) en mi pc para tener un servidor de pruebas.

Problema 1) En el servidor tengo una base de datos MySQL (con phpmyadmin) y la exporté a mi pc en diversos formatos sin problemas, pero, al importarla desde mi pc hacia el phpMyAdmin de Wamp, no me la toma. No encontré la forma en 2 horas probando (probé comprimir, exportar como texto, sql, etc.). (Creo que la diferencia está en que en el servidor de alojamiento de mi sitio, tengo que crear la base en el panel de control primero (ponerle contraseña, nombre de usuario y nombre de base de datos) y en el phpMyAdmin solo tengo que ponerle nombre a mi base de datos (sin password ni nombre de usuario).

Problema 2) Justamente, en relación a lo anterior, copie los códigos en sql que tengo guardados en formato txt y cree la base de datos igual que en el sitio web (ya que no podía transferirla). Cuando digo igual, es igual. Sin embargo, cuando probé mi sitio en mi pc, salía error de la base de datos (cambie \ por * porque aquí en el foro dice que soy spam por las url (tengo menos de 30 días) :
Cita:
Notice: Undefined index: id in C:*Archivos de programa*wamp*www*tank*tank.php on line 15

Warning: mysql_connect() [function.mysql-connect]: Access denied for user tank.php on line 9

Warning: mysql_select_db() expects parameter 2 to be resource, boolean given tank.php on line 10

Warning: mysql_query() expects parameter 2 to be resource, boolean given in index.php on line 71

Warning: mysql_fetch_row() expects parameter 1 to be resource, null given in index.php on line 72
Creo que justamente, es porque en mi archivo php hay una función que abre la base de datos (nombre de usuario / nombre de base de datos y contraseña) y que cuando intenta leer la base de datos creada en el phpMyAdmin de Wamp, no la lee porque justamente carece de 2 de estos datos.
Cambiando un poco el tema:
Problema 3) Hice unos scripts sencillos en php para probar el servidor de pruebas (valga la redundancia) y funcionan muy bien (Puse también php info() y todo ok). El problema es cuando uso formularios html : a) Tengo un formulario en prueba.php.
Cita:
<form action="pruebaphp.php" method="post">
<input type="text" name="nombre">
<input type="submit" value="Entrar">
Y luego viene el código php
Cita:
$edad = $_POST["nombre"];
echo "Tu edad: $nombre<p>";
Pero resulta que sale el cartel
Cita:
Notice: Undefined variable: nombre in pruebaphp.php on line 62
(TODOS ESTOS HACEN REFERENCIA A LA CARPETA WAMP, NO LO PUSE, PORQUE EN EL FORO ME MARCA SPAM!)
¿Como debo hcer para que la variable "nombre" del formulario (<input type="text" name="nombre") se defina antes? porque me sale el cartel y no lo he podido eliminar (modifique el php.ini y register_globals=on) .
Tengo entendido que es un error de segundo orden, pero error al fin, intentaba darle valor a la variable, pero nada.
Gracias a todos
  #2 (permalink)  
Antiguo 03/08/2009, 18:03
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
De acuerdo Respuesta: Servidor Local PHP/MySQL

oye que mal, he publicado una respuesta algo completa y sucede que el foro me baneo todo y la verdad me da locha volver a escribir todo eso.

solo te digo reinstala todo, si no te va, prueba con uniformserver www:uniformserver:com, de no ser asi entonces:

1. debes crear tu la bd y luego subir el script exportado desde tu host.
2. valida que las credenciales del portal sean las mismas pues el usuario que usabas para conectarte a mysql desde tu hosting no es el mismo en tu maquina local.
3. es extraño, prueba a cambiar el method del form por GET y cuando recibas en el codigo php intenta con $_GET[""]. todo esto con el fin de ir identificando de que se trata, sorry mi respuesta era mucho mejor y mas completa.

Suerte.

PD: cambien los (.) por (:) en la url
  #3 (permalink)  
Antiguo 03/08/2009, 19:16
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Servidor Local PHP/MySQL

Estimado veamos paso a paso los errores...

1) El notice que figura en su php es un error menor , lo que le indica que no existe el componente (indice) id en su arreglo asociativo.

2) Mysql_Connect fallá debido a que usted debe configurar en forma correcta los parametros de conexion (servidor,username,pass) a su servidor de base de datos local.

3) El error de mysql_select_db esta estrechamente vinculado con el error anterior ya que la sintaxis de la función mysql_select_db es la siguiente:

Código php:
Ver original
  1. <?php
  2. mysql_select_db('tabla',$link);
  3. ?>

En donde $link debe ser un recurso de conexion mysql valido , en resumidas cuentas y pasado al castellano al no poder levantar la conexion mysql tampoco podrá seleccionar una tabla sql , o realizar ninguna operación en donde intervenga la variable que posee el recurso de conexion mysql valido.

4) No tiene nada que ver que en su tabla no existan los datos de nombre usuario y password como campos , es totalmente aparte y no tiene ninguna relación dicha faltante con su error , solamente para evitar el error de que no se puede conectar debe realizar una correcta configuración de los parametros de conexion al momento de invocar la función mysql_connect.

5) Respecto al cambio realizado en su fichero php.ini le recomiendo desactivar las variables globales ya que son un riesgo para la seguridad y por otro lado llevan al programador a caer en el vicio de emplearlas y recuerde que una variable global lleva más tiempo y mas consumo de memoria y procesador en declarse , asignarse y operaciones de lecto-escritura , con lo cual no le conviene en absoluto.

6) Respecto a tu codigo de prueba , el error que le da es el undefined index , que vuelvo a repetirle sucede cuando usted quiere acceder a un campo de un arreglo mediante un indice inexistente , recuerde que un arreglo es una colección de datos indexada heterogenea en php , con lo cual si dicho indice no existe quiere decir que dicho valor no podrá ser accedido , es un poco de logica cotidiana dicho error , mi solución a su problema seria la siguiente:

prueba.php

Código php:
Ver original
  1. <?php
  2. if(isset($_POST['nombre')){
  3. $edad = $_POST["nombre"];
  4. echo "Tu edad: $nombre<p>";
  5. }else{
  6. ?>
  7. <html>
  8. <head>
  9. <title>Formulario</title>
  10. </head>
  11. <body>
  12. <form name="demo" action="prueba.php" method="POST">
  13. <input type="text" name="nombre" value="Inserte su nombre"/>
  14. </form>
  15. </body>
  16. </html>
  17. <?php
  18. }
  19. ?>

Le explico en resumidas cuentas , mediante la invocación a la función isset , compruebo si el campo existe dentro de arreglo asociativo del post , es decir si esta declarado , si esta declarado quiere decir que envie los datos , entonces mediante el uso de if muestro el nombre , si no existe quiere decir que no envie los datos aún , por lo tanto muestro el formulario.

Espero que mi explicación le haya sido util.

Saludos!

Última edición por jonatanc; 03/08/2009 a las 19:21
  #4 (permalink)  
Antiguo 04/08/2009, 11:54
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Amigo Jonatanc:
Este es el código php del archivo que funciona correctamente en la red (y que parece que falla en el servidor de pruebas)
Cita:
$dbhost='localhost';
$dbusername='omdsetenta_omd'; //nombre del usuario
$dbuserpass='4132'; //password o contraseña del usuario
$dbname='omdsetenta_rank';//nombre de la base de datos
$link = mysql_connect($dbhost, $dbusername,$dbuserpass);
mysql_select_db($dbname, $link);
Pero me sale el error en la línea 15 de este archivo rank.php, que dice:
Cita:
$id = $_GET['id'];/
E insistiendo con el tema, eliminé el usuario root en PhpMyAdmin y quedó solo configurado
el usuario omdsetenta_omd con la contraseña 4132 y la base de datos se llama omdsetenta_rank. En el archivo config.inc.php, también está el nombre de usuario omdsetenta_omd y la contraseña 4132, pero no está el nombre de la base de datos en este archivo (omdsetenta_rank).
Conclusión: No se donde está la falla para la configuración de phpMyAdmin en wamp, ya que, en el archivo rank.php dice:
Cita:
$link = mysql_connect($dbhost, $dbusername,$dbuserpass);
mysql_select_db($dbname, $link);
ES DECIR; el $link pide los datos para acceder y creo que estos datos son correctos (ya que en la base de datos NUEVA de wamp-mySQL la cree para que pueda ser leida. Pero nada.
Por ahí lei que hay que editar el php.ini, pero en realidad no tengo idea.
Si me ayudas a levantar la conexión, te agradecería. Nos vemos master

Gracias por ayudar, pero realmente no he logrado nada.

Hola amigos:
Tengo un servidor local (localhost) apache/phpMyADmin. Trabajo con dreamweaver en el sitio.
Mi pregunta es la siguiente: Si ya cree la conexión a la base de datos con dw (sin problemas) y está todo ok. Porque me sale esto?
Notice: Undefined index: id in C:\wamp\www\rank\rank.php on line 15
Se refiere a esto
Cita:
$id = $_GET['id'];
(es donde consigo el id, que está en otro archivo php)
Por que no consigue el id del otro archivo? La conexión a la db es exacta. Por otro lado, decirles que en el servidor remoto, esto funciona sin problemas (el problema solo en mi servidor local). ¿Qué puede ser? Gracias

Última edición por GatorV; 05/08/2009 a las 22:02
  #5 (permalink)  
Antiguo 05/08/2009, 17:41
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Mensaje: Notice: Undefined index

el problema esta en el nivel de advertencia de errores
lo q te esta diciendo es q el arreglo $_GET no vino el elemento id
ahora si intentas con algo del tipo
www.tusitio.com/pagina.php?id=
va a funcionar correctamente
sino revisa error_reporting() y display_error
__________________
Degiovanni Emilio
developtus.com
  #6 (permalink)  
Antiguo 05/08/2009, 19:20
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Mensaje: Notice: Undefined index

Amigo, gracias. Primero soy novato, pero, el archivo funciona perfectamente en internet. En resumidas cuentas, este mensaje de error me lo da sólo en mi localhost, no en internet. Hay otra solución? Gracias.
  #7 (permalink)  
Antiguo 05/08/2009, 19:55
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Mensaje: Notice: Undefined index

Estimado , ser novato no significa no interiorizarse sobre las soluciones propuestas , le explico en modo más extendido su problema y la solución planteada.

Su problema: Undefine index

El motivo del error "Notice: Undefined Index" , se debe a lo siguiente , imaginese usted que posee una fila de alumnos , cada alumno tiene una posición determinada en la fila , pues bien , numeremos los alumnos del 0 a la cantidad de alumnos que tengamos , es decir imaginemos que tenemos 5 alumnos:

Alumno Posición

Esteban 0
Juan 1
Eric 2
Jessica 3
Mercedes 4

Pues bien , esa es nuestra fila , como podria observar empezaremos a contar desde el 0 ,con lo cual si tenemos hasta el numero ordinal 4 quiere decir que tenemos (4+1) debido a que empezamos un numero antes a contar , es decir tendremos nuestros 5 alumnos.

Proseguimos , usted es un director muy malvado de escuela y desea castigar en forma aleatorio a que el alumno X limpie su despacho todos los dias durante un mes , usted siempre confiado en que sus alumnos no se escapen de la fila , justamente ese dia su madre lo llama en el momento de la elección del alumno a castigar y se da vuelta por un instante , cuando regresa la mirada sobre la fila , no nota que falta un alumno ya que previamente a usted le dieron una lista con los nombres y ya tenia como decisión anticipada castigar a Esteban porque le parecia feo su nombre , entoncés dice Esteban venga aqui , nadie va a donde usted solicita ya que esteban sin que usted se de cuenta se escapo de la fila y se escondio en un armario viejo .Entoncés al convocarlo no vendra con lo cual nos generara un problema de que al no existir no podremos convocarlo.

Pues bien creo que fue claro el ejemplo , pero ahora pasemos a php.

El tipo de dato estructuado ARREGLO es una estructura que puede modelizarse como una colección contigua y ORDENADA de elementos en memoria , quiere decir que imaginese que esteban ocupe la dirección de memoria 0000 , juan ocupara la 0001 y asi sucesivamente hasta la dirección 0004 que pertenecera a mercedes.Dicha estructura permite el acceso mediante la variable identificatoria , suponga en php lo siguiente:

Código php:
Ver original
  1. <?php
  2.  
  3. $dato=array(); //-- La variable identificatoria es $data
  4.  
  5. ?>

y un indice , por que un indice? como hemos dicho es una coleccion ORDENADA y su ocupación en memoria es consecutiva , con lo cual podemos decir que para acceder a dicha estructura lo hacemos en forma DIRECTA mediante un identificador y un valor entero del tipo ordinal (indice).

Veamos un ejemplo en php.

Código php:
Ver original
  1. <?php
  2.  
  3. $arreglo=array(1,2,3,4,5);
  4.  
  5. //-- Accesos validos
  6. echo $arreglo['0']; //-- Retorna 1
  7. echo $arreglo['1']; //-- Retorna 2
  8. echo $arreglo['2']; //-- Retorna 3
  9. echo $arreglo['3']; //-- Retorna 4
  10. echo $arreglo['4']; //-- Retorna 5
  11.  
  12. //-- Acceso invalido ya que el componente no existe
  13. echo var_dump($arreglo['6']);
  14.  
  15. ?>

Como vemos en el codigo al intentar acceder a un componente que no existe en una coleccion /arreglo nos dira en este caso NULL (Nulo) transporando estos conocimientos a su problema particular , el envio de datos mediante los metodos GET o POST generan arreglos Asociativos es decir (llave->valor) con los valores pasados via URL o FORM en el caso de GET y en el caso de POST pasados via formulario , al usted intentar acceder a un componente inexistente ID , debido a que usted en la cadena de consulta (QUERY_STRING) no ha accedido de la forma:

Código php:
Ver original
  1. http://www.micasalindalindalinda.com/index.php?id=valor

sino de la forma:

Código php:
Ver original
  1. http://www.micasalindalinda.com/index.php?

el componente id no existe en su arreglo GET , decimos GET debido a que los parametros pasados por URL son almacenados por dicho arreglo.

La solución a este problema se encuentra haciendo lo siguiente:

Código php:
Ver original
  1. <?php
  2. if(isset($_GET['id']){
  3. echo "esta pasado el parametro id";
  4. }else{
  5. echo "no esta pasado";
  6. }
  7. ?>

Vea usted que con la función isset comprobamos si una variable esta declarada o no , de este modo comprobamos si el parametro id esta inicializado y declarado en su arreglo GET , si no lo esta quiere decir que usted no accedio pasando ese parametro via url .

Espero que mi explicación le haya sido de utilidad .

Saludos!
  #8 (permalink)  
Antiguo 05/08/2009, 22:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Servidor Local PHP/MySQL

Temas unidos porfavor NO dupliques temas.
  #9 (permalink)  
Antiguo 06/08/2009, 12:08
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Servidor Local PHP/MySQL

Estimado Jonatan:
Gracias por esta gran explicación, mi pregunta es:
¿Porque debo modificar mis archivos para que trabajen bien en mi sitio local, si en internet no necesito hacerlo, ya que funcionan perfectamente bien?
Esa es mi pregunta. Yo puedo modificar el php.ini, y todos los archivos de configuración de mi sitio local, inclusive los del phpMyAdmin, etc., pero los archivos que tengo en la red y funcionan bien (no me dan ningún error), porque en mi sitio local debería modificarlos para que funcionen bien? Eso es lo que no entiendo.
De nuevo, gracias por la explicación, aunque creo que el problema es de configuración de mi localhost y no de mis archivos php.
  #10 (permalink)  
Antiguo 06/08/2009, 12:16
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Servidor Local PHP/MySQL

Estimado , como creo que han mencionado colegas en replicas más antiguas , en los servidores remotos los php.ini también son modificables ,aunque depende claro ,es decir , si ud tiene contratado un proveedor de hosting pago casi seguro puede modificar su php.ini a su pland e web hosting , en cambio si el servidor es gratuito dudo de que podra realizar este cambio.

Llendo de lo general a lo particular con su error , quizas su servidor remoto tenga configurado el repote de errores en un nivel que las alertas "notice" no las muestra , pero si los warning y fatal.Ahora pues bien , usted me dira y esto como lo vinculo a mi error? simple , en su servidor de desarrollo local , usted tiene el perfil de errores configurado con los fatal , warning y notice activos , es decir si se produce uno de estos errores le avisara , en cambio en el servidor de producción (webhosting) seguramente el perfil de display de errores sea solo E_WARNING Y E_FATAL , con lo cual solo mostrar dichos errores y no asi tu error notice.

Espero que me haya entendido ambas explicaciónes.

Saludos!
  #11 (permalink)  
Antiguo 06/08/2009, 17:21
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Servidor Local PHP/MySQL

Excelente explicación. Si, mi servidor de hosting es pago. Será posible que yo pueda obtener una copia del php.ini de mi servidor para configurar el mío? O, más fácil, como podría configurar mi php.ini para que no me salten los errores de notice? Y además, ya que estamos en el tema, ¿Es conveniente que no me salten los errores de notice? Gracias jonatan, excelentes explicaciones.
  #12 (permalink)  
Antiguo 06/08/2009, 17:34
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Servidor Local PHP/MySQL

Estimado , generalmente si su servidor no posee la personalización de su fichero php.ini , acceder a una copia de el es virtualmente imposible , consulte con el area tecnica de su proveedor de servicios de alojamiento.

Usted podria en vez de configurar su php.ini que al hacerlo altera la configuración global , es decir todo script regira bajo las ordenes configuradas en su php.ini , lo más conveniente es configurar el nivel de errores desde el mismo script php , es decir en modo local.

Dicha configuración usted la podra realizar mediante la funcion nativa de php , error_reporting.

En cada codigo php lueo del tag de apertura de php puede incluir el siguiente codigo:

Código php:
Ver original
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  3. ?>
Le dejo un link de referencia al manual de php donde lo explican mejor que yo .

http://ar.php.net/manual/en/function...-reporting.php

Por el lado de la conveniencia le explico , cuando usted programa en modo local , es decir esta en fase de desarrollo y prueba es totalmente conveniente que salgan los errores , en cambio en un servidor de producción es totalmente conveniente ocultar todo tipo de error que se muestre en el navegador , recuerde que php ademas de mostrar el error en el navegador genera un log al cual usted puede acceder en todo momento.

Saludos!
  #13 (permalink)  
Antiguo 06/08/2009, 17:47
(Desactivado)
 
Fecha de Ingreso: julio-2009
Mensajes: 85
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Servidor Local PHP/MySQL

Le puse tu sentencia:
Cita:
error_reporting(E_ERROR | E_WARNING | E_PARSE);
Y mejoró notablemente, aunque no me lee los demás scripts (sólo el primero de 10). Antes de poner esta línea, me salían 2 cosas (te recuerdo que en internet nada de esto sale):

Cita:
Notice: Undefined index: id in C:\wamp\www\rank\rank.php on line 15
Fatal error: Cannot redeclare conectar() (previously declared in C:\wamp\www\rank\rank.php:5) in C:\wamp\www\rank\rank.php on line 13
En resumidas cuentas, me dice que no puedo redeclarar de nuevo la conexión. Después de charlar aquí y, sabiendo que en internet este error fatal no se produce, es posible, pensando, de que en el servidor hay archivos de configuración que cuando se abra una base de datos y no se cierra, la cierre automáticamente etc., porque me parece que debería abrir y cerrar la base de datos en cada script por separado. No se si estás de acuerdo, ni si me expliqué correctamente. ADemás, no se como se cierra una base de datos. No se nada (ni me preocupo por ello tampoco), pero te aviso, como deducirás, que los archivos php los descargué de la red, no los edité.
  #14 (permalink)  
Antiguo 06/08/2009, 19:56
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Servidor Local PHP/MySQL

Estimado , graciás por la acotación sobre que significa su error , sin embargo usted sigue teniendo conceptos muy equivocados .Paso a explicarle un par de cosas:

1) Ningun servidor de web hosting se preocupa por cerrar conexion ni altera su codigo php , con lo cual quiero desterrar por completo su idea de que hay archivos de configuración que cuando uno abre una Db y no la cierra la cierran en forma autonoma.

2) Como usted dice en teoria luego de una apertura , manipulación deberia cerrarse o liberarse el recurso de la consulta , en mysql con php existen funciones que se encargan de cerrar el link con la base de datos y de liberar recursos como mysql_free_result , y mysql_close , generalmente usando la logica ante todo , todos sabemos que cuando abrimos la canilla hay que cerrarla , es algo natural , bueno en programación es igual , no dista de ser una apertura y cierre , con la diferencia que el cierre es optativo , depende la configuración del servidor debido a que creo que hay algunos que cierran en modo automatico la conexion cuando expira el tiempo , pero es util liberar los recursos antes de este cierre por parte del sistema.

Por otro lado Quisiera , no se tomelo como un reto , una advertencia o solo una simple advertencia , el peor pecado de un profesional IT es decir no se nada ni me preocupo por ello tampoco , la dejadez o falta de interes por los temas provocan un acumulamiento de desinteres que llevan a hacer codigo pobre , y a su vez perjudicar su calidad de vida , recuerde siempre , cerebro en funcionamiento , buena memoria , buena vida.

Por más que algo no sea de su entero interes si piensa que resulta util a su codigo aprendalo igual o si tiene alguna duda no dude en recurrir a un libro o la fuente de información mas accesible , recuerde internet tiene mucho pero de verdad poco.

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:32.