Regístrate gratis para participar de los foros, o si ya estás registrado haz login.
| comentario del autor | Sab Dic 13, 2003 10:55 am | |
|
Tuve unos problemillas con el mysql despues, pero era una tonteria ke consegui solucionar mirando los archivos /usr/local/mysql/var, y es ke cdo volvi a instalar por enesima vez el mysql, como lo tenia lanzado de antes, no me dejaba volver a lanzarlo (cosa logica) xD Bueno, pero ahora vengo con una cosa nueva. Apache+PHP Lo he instalado varias veces, y todas ellas me iba, pero sin embargo no me dejaba usar el script ke rula por inet de la autentificacion, para ponerle algo de seguridad, aunke sea una chorrada. Estuve indagando y encontre una pagina en la ke decian ke se necesitaba tener el php instalado como modulo de apache para ke funcionase, ke como cgi no funciona, y en la primera instalacion lo tenia como cgi. Asi ke me puse a buscar a ver como instalarlo como modulo y encontre un minimanual en el ke algo te explicaba, lo hice tal cual, y sigue sin funcionar. Aunke no es eso lo ke mas me molesta, sino ke tenia ya una pagina hecha con formularios y acceso a mysql, la cual no funciona if ($buscar) echo "x"; else echo "formularios"; Debo decir ke el codigo esta bien, seguro, pues lo probe en su dia y funcionaba. O sea se, ke el problema esta en la instalacion de apache+php. Lo de ke no vaya bien lo se pq le puse unos filtros para ke si ponias letras en lugar de numeros en la fecha (por ejemplo), te mostraba un error estilo "Fecha erronea", con un link de la misma pagina para volver al formulario. Y eso deberia funcionar, pues la pagina en si aparece, pero solo el formulario. Creo ke la estoy liando demasiado XDDD Bueno a ver, te pongo aki los configure ke hice en dos ocasiones. La primera como cgi : ./configure --prefix=/usr/local/apache/1.3.27 --datadir=/web/htdocs --enable-rule=SHARED_CORE --enable-module=so La segunda con modulos: ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a --activate-module=src/modules/standard/mod_speling.o --activate-module=src/modules/standard/mod_info.o (en el php con esta segunda puse: ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apache=/usr/src/install-apache/apache_1.3.XX \ --enable-track-vars --enable-force-cgi-redirect --with-gettext) Por lo del directorio de apache no hagas caso, ke es ke lo he copiado de los manuales ke hay por inet. Y eso, ke no me termina de instalar bien el php y ya toy cansado de mirar cosas Muchas gracias otra vez por tu tiempo y un saludo |
||
| asistió a la solución | Dom Dic 14, 2003 5:27 pm | |
|
No trates de probarlo con scripts sofisticados. Simplemente haz un script php muy simple con un echo "Hola mundo!", por ejemplo. O con un echo php_info(); Pasa los errores de compilación. Puedes hacer un archivo con los errores de complilacion así: make 2>errores.log Ahí rediriges los errores a un archivo errores.log, luego nos copias en el foro el contenido de errores.log. Saludos y suerte. |
||
| comentario del autor | Lun Dic 15, 2003 5:38 am | |
|
# if (!isset($PHP_AUTH_USER)) # { # header('WWW-Authenticate: Basic realm="La web de prueba"'); # header('HTTP/1.0 401 Unauthorized'); # echo 'Autorizacion requerida'; # echo '<TABLE><A Href=index.html><H3>Volver</H3></A></TABLE>'; # exit; # } # $fich = file("passwords.txt"); # $i=0; $validado=false; # while ($fich[$i] && !$validado) # { # $campo = explode("|",$fich[$i]); # if (($PHP_AUTH_USER==$campo[0]) && ($PHP_AUTH_PW==chop($campo[1]))) $validado=true; # $i++; # } # if (!$validado) # { # header('WWW-Authenticate: Basic realm="La web de prueba"'); # header('HTTP/1.0 401 Unauthorized'); # echo 'Autorizacion requerida.'; # echo '<TABLE><A Href=index.html><H3>Volver</H3></A></TABLE>'; # exit; # } (Lo tengo comentado pq sino no me dejaba entrar en la pagina) De ke la instalacion sea como modulo o como cgi deduzco ke el resto de problemas ke tengo con la pagina han de ser por eso tb, es decir, ke si consigo ke me vaya el script de seguridad seguramente tb me iran las paginas (vamos, como lo tenia todo antes de reinstalar). Lo otro es ke es mas complicado de explicar, pero digamos ke en una misma pagina (en un mismo php), hay como si fueran varias paginas. Me explico, la primera vez ke se entra, como el valor de las variables es cero, pues se muestra un formulario. Una vez dentro, ke ya se puede pulsar botones, pues depende de cual pulses te lleva a un lado o a otro, pero todo el codigo esta en la misma pagina. Eso lo he hecho con sentencias condicionales dentro del codigo de php (tb se podria hacer con case, ke para el caso tb es una condicion xD). Y ahi es donde me viene la movida. Ahora mismo tal como lo tengo entro en la pagina y solo me carga el formulario, hace caso omiso a las sentencias condicionales. Y eso es lo ke mas me jode. Espero haberme explicado bien esta vez. Muchas gracias por tu tiempo mauricio. Y un saludo muy grande |
||
| asistió a la solución | Lun Dic 15, 2003 11:20 am | |
|
Como CGI php se utiliza como un programa en línea de comandos, y se le pasan las entradas como a cualquer programa de línea de comandos por argumento o por entrada estándar. Se puede por lo tanto hacer chroot y setuid al cgi de php para establecer ambientes de ejecución segura de scripts. La idea es que se utilice de esta forma solo si se sabe que se precisa por una necesidad especial, lee http://www.php.net/manual/es/security.cgi-bin.php. Una seria desventaja de utilizar php como CGI, (además de que las configuraciones de seguridad son un poco más complicadas) es que cada vez que se utiliza PHP se abre un nuevo proceso del cgi de php. Levantar un proceso significa un costo de recursos del sistema para efectuar la tarea. La forma preferida de correr PHP es como módulo. Cuando se corre como módulo PHP se integra al servidor web como una extensión del mismo, por tanto se inicia una sola vez cuando se levanta el servidor WEB. En este caso PHP corre con los privilegios del usuario de Apache que usualmente es nobody, lo que provee un entorno bastante seguro. Lo que tú estás haciendo en el script es utilizar la autentificación por HTTP. Esta forma de autentificación está disponible solo en PHP corriendo como módulo de apache y no como CGI. Seguramente porque en la versión CGI no se puede enviar al servidor web, y luego al cliente el mensaje HTTP para requerir autentificación , lo que haces en la línea con la función header(). Lee sobre esto en: http://us2.php.net/features.http-auth Mi recomendación, si no tienes una necesidad apremiante para utilizarlo como CGI, un método un poco obsoleto en estos tiempos, no lo hagas, utilízalo como módulo. Te recomendaría leer documentación adicional sobre HTTP para hacerte una mejor idea de como funciona la autentificación que estás utilizando, tienes los RFCs 2616 y especialmente el 2617. Saludos y suerte. |
||
| comentario del autor | Lun Dic 15, 2003 1:40 pm | |
|
La pagina sobre la autentificacion por http ya la lei por encima, antes de poner la cuestion aki, pero no me aclaro nada De ahi es de donde sake lo de ke para ke funcionase tenia ke hacer la instalacion del php como modulo de apache. Pero el problema es ke lo tengo asi, y sigue sin funcionar, ni eso, ni lo del ejemplo de pagina ke te dije. Supongo ke no me keda otra opcion ke tirar de apt, para tenerlo como lo tenia antes, pero me molesta el hacerlo con los sources oficiales y no obtener el mismo resultado Un saludo, y muchas gracias por tu ayuda. Si me surge alguna duda con cualkier otra cosa ya se donde acudir |
||
| asistió a la solución | Lun Dic 15, 2003 1:49 pm | |
|
¿Entonces ya lo tienes compilado como módulo? ¿El PHP está andando? ¿Hiciste alguna prueba mínima además de esta de autenticación? Por ejemplo, es muy útil la función phpinfo() porque ya te dá información del estado de php y las características con las que está funcionando. ¿No será que lo compilaste como módulo pero olvidaste hacer la configuración en Apache? Capaz que todavía está usando el CGI. Tienes que cargar el módulo con una línea LoadModule en /etc/apache/httpd.conf. Vamos que tiene solución. Saludos. |
||
| comentario del autor | Mar Dic 16, 2003 8:23 pm | |
|
En la instalacion de apache como cgi si ke puse en el httpd.conf la linea de LoadModule, pero tp iba asi A ver si en ultimos intentos se puede solucionar.Un saludo y gracias por aguantar ahi al frente de la brecha |
||
| sin valorar | Mie Dic 17, 2003 12:02 am | |
Robin escribió:Compilado como modulo estaba, en la segunda instalacion no lo toke en el httpd.conf del apache, lo hice en la configuracion directamente: --activate-module=src/modules/php4/libphp4.a A ver.. por el phpinfo que me pasaste, tienes php corriendo como módulo para Apache 1, eso es bueno, y está funcionando sino no podrías haber visto el phpinfo. Ahora, no te des por vencido, php funciona, lo que no te funciona es el script de autentificación basado en autentificación HTTP. ¿Por qué? Veamos. Voy a probarlo en casa, porque nunca he usado autentificación por HTTP, solo he utilizado autentificación por formulario y sesiones. Perame que te cuento... |
||
| asistió a la solución | Mie Dic 17, 2003 12:48 am | |
|
'./configure' '--prefix=/usr/local/php' '--with-mysql=/usr/local/mysql' '--with-apache=/usr/local/src/lamp/apache_1.3.29' '--enable-track-vars' '--enable-force-cgi-redirect' '--with-gettext' y estos los módulos de Apache cargados: mod_php4, mod_setenvif, mod_auth, mod_access, mod_alias, mod_userdir, mod_speling, mod_actions, mod_imap, mod_asis, mod_cgi, mod_dir, mod_autoindex, mod_include, mod_info, mod_status, mod_negotiation, mod_mime, mod_log_config, mod_env, http_core mod_auth está cargado así que todo debería funcionar. Cito el script que mandaste: Código:
Lo único latente de falla que veo aquí es el uso de $PHP_AUTH_USER y demás en vez de $_SERVER['PHP_AUTH_USER'], si tienes la directiva register_globas de tu php.ini en off, cosa que es así por defecto desde php 4.2 entonces estas variables globales no van a existir, solo van a existir dentro del array $_SERVER y una vez tras otra va a suceder que se ejecuta el primer if y nunca te logras autentificar. Si no es esta la falla, cuenta cual es que creo ya la tenemos acorralada contra el muro!! Entregate bandida!! Saludos y suerte! |
||
| comentario del autor | Vie Dic 19, 2003 2:54 pm | |
|
|
||
| solución | Vie Dic 19, 2003 5:10 pm | |
Código:
Espero que esto resultara ser el problema. Mejor es que no actives el registre_globals y te acostumbres a utilizar las variables globales de sus correspondientes arrays, es más seguro, pues las variables globales, así como las de POST y GET y COOKIES pueden inicializarse por el usuario, a veces con fines maliciosos. Saludos y suerte. |
||
| comentario del autor | Vie Dic 19, 2003 6:55 pm | |
|
extract ($_POST); Puesto ke como hay movidas con las variables globales y todo eso, si no se cargaban antes del array post, pues entonces los botones es como si no fueran. Muchisimas gracias por todo, pq si no me hubieras dicho ke el problema estaba en lo del register_global hubiera tardado muchiiiiisimo en darme cuenta, si es ke alguna vez llegaba a esa conclusion. Ah, y lo del script de seguridad tb funciona ya, era simplemente poner lo ke dijiste Pues eso muchacho, muchisimas gracias por tu ayuda Un saludo! |
||
| asistió a la solución | Vie Dic 19, 2003 11:24 pm | |
|
Pero me alegro mucho de que lo hayas resuleto!!! extract($_POST) declara como variables globales cada elemento del array, poniendo como nombre de la variable el índice correspondiente en el array. Como medida de seguridad, recuerda siempre no confiarte en las variables recibidas por POST, GET o COOKIES, es un tema a parte pero un buen principio como para que lo mencione de nuevo. Una alegría que funcione! Saludos! |
||