Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: franfis en 28 Marzo 2014, 01:12 am



Título: php no soporta regex complejo
Publicado por: franfis en 28 Marzo 2014, 01:12 am
Hola amigos. Ciertamente no es un regex tan complejo pero cada vez que lo ejecuto en el  wampserver aparece el famoso mensaje Esta página web no está disponible, el archivo oui.txt lo obtengo de aqui http://standards.ieee.org/develop/regauth/oui/oui.txt (http://standards.ieee.org/develop/regauth/oui/oui.txt) . Este el codigo.

Código:
<?php
set_time_limit(0);
$file = file_get_contents("oui.txt");
preg_match_all("/([0-9A-F]{6})(?:.+\n)*(.*?)\n{2}/", $file ,$res, PREG_PATTERN_ORDER);
var_dump($res);
?>

Este es el link http://www.regexr.com/38kq5 (http://www.regexr.com/38kq5) del regex. Como se indica en el regex tengo dos grupos de captura con los cuales pretendo obtener los 6 caracteres consecutivos y el pais, por ejemplo en

Código:
0000BD     (base 16)		MITSUBISHI CABLE COMPANY
520 MADISON AVENUE
NEW YORK NY 10022
                                CHINA
Seria 0000BD y CHINA los grupos de captura.

Con el archivo reducido a solo lo que se muestra en el link del regex obtendo esto:
Código:
array
  0 =>
    array
      empty
  1 =>
    array
      empty
  2 =>
    array
      empty

No muestra lo que quiero pero al menor soporta el wampserver pero cuando pruebo con el oui.txt original(2MB) aparece Esta página web no está disponible.

Como puedo hacer para que wampserver no se venga abajo con el original oui.txt

Graciass de antemano


Título: Re: php no soporta regex complejo
Publicado por: ~ Yoya ~ en 29 Marzo 2014, 15:43 pm
Yo lo probé y funciona a la perfección.

Puede ser que PHP consuma mas memoria que la permitida y por eso se detenga la ejecución, pero puede ser otra cosa igual.

Revisa los error los del wampserver y veras la razón porque falla. También podrías subirlo a pastebin y postear la URL en este hilo.

PD: No vayas a copiar todos los errores que hayas tenidos, solo lo que tienen que ver con el archivo PHP que utiliza expresiones regulares para parsear el archivo oui.txt

Saludos.


Título: Re: php no soporta regex complejo
Publicado por: franfis en 29 Marzo 2014, 19:37 pm
Citar
Yo lo probé y funciona a la perfección.

Puede ser que PHP consuma mas memoria que la permitida y por eso se detenga la ejecución, pero puede ser otra cosa igual.

Revisa los error los del wampserver y veras la razón porque falla. También podrías subirlo a pastebin y postear la URL en este hilo.

PD: No vayas a copiar todos los errores que hayas tenidos, solo lo que tienen que ver con el archivo PHP que utiliza expresiones regulares para parsear el archivo oui.txt
No me muestra nada, el log de errores php_error.log de wampserver esta en blanco, básicamente en el PHP.ini tengo esto:

Código:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
html_errors = On
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog (Event Log on NT, not valid in Windows 95).
;error_log = syslog
;error_log = "c:/wamp/logs/php_error.log"
Alguna sugerencia, gracias.



~ Yoya ~ Que version de wampserver usaste?  :huh:


Título: Re: php no soporta regex complejo
Publicado por: ~ Yoya ~ en 30 Marzo 2014, 03:51 am
Nose, lo probe en Window pero de momento estoy en Linux...

Mira, Wampserver poco tiene que ver con lo que esta pasando, y cualquier problema que tenga que ver con PHP, Mysql o Apache. No te genera logs, porque simplemente tienes desactivado la opción para que lo genere, segun el php.ini que mostrastes.

Error logging with WAMP server in PHP (http://stackoverflow.com/questions/9230984/error-logging-with-wamp-server-in-php)

Asegúrate de que Wampserver este generando los logs de errores antes de probar con el código que tienes problema. Puedes provocar un error para darte cuenta.

Saludos.


Título: Re: php no soporta regex complejo
Publicado por: franfis en 30 Marzo 2014, 05:40 am
Es extraño php_error.log sí logea los errores pero los errores de código, lo acabo de comprobar. No del tipo de error que me resulta.


Título: Re: php no soporta regex complejo
Publicado por: ~ Yoya ~ en 30 Marzo 2014, 05:44 am
Revisa el error log del apache, se encuentra en wamp/logs/apache_error.log


Título: Re: php no soporta regex complejo
Publicado por: franfis en 30 Marzo 2014, 15:22 pm
En el error_apache.log aparece esto:
Código:
[Sun Mar 30 08:09:17 2014] [notice] Parent: child process exited with status 3221225477 -- Restarting.
[Sun Mar 30 08:09:17 2014] [notice] Apache/2.2.17 (Win32) PHP/5.3.5 configured -- resuming normal operations
[Sun Mar 30 08:09:17 2014] [notice] Server built: Oct 18 2010 01:58:12
[Sun Mar 30 08:09:17 2014] [notice] Parent: Created child process 2240
[Sun Mar 30 08:09:18 2014] [notice] Child 2240: Child process is running
[Sun Mar 30 08:09:18 2014] [notice] Child 2240: Acquired the start mutex.
[Sun Mar 30 08:09:18 2014] [notice] Child 2240: Starting 64 worker threads.
[Sun Mar 30 08:09:18 2014] [notice] Child 2240: Starting thread to listen on port 80.
Este texto de arriba va multiplicándose a medida que ejecuto el código, cuando ejecuté otro codigo que si funciona bien, sin errores aparecio esto:

Código:
 [Sun Mar 30 08:11:26 2014] [error] [client 127.0.0.1] client denied by server configuration: C:/Dev, referer: http://localhost/pruebas/php/
[Sun Mar 30 08:11:26 2014] [error] [client 127.0.0.1] client denied by server configuration: C:/Dev, referer: http://localhost/pruebas/php/
[Sun Mar 30 08:11:26 2014] [error] [client 127.0.0.1] client denied by server configuration: C:/Dev, referer: http://localhost/pruebas/php/
[Sun Mar 30 08:11:26 2014] [error] [client 127.0.0.1] client denied by server configuration: C:/Dev, referer: http://localhost/pruebas/php/

Bueno cual será el error, voy a instalar otro wampserver para probar.