2011-09-30 6 views
11

Tengo un cronjob que resume las estadísticas del navegador. Este cronjob carga datos y luego utiliza la función PHP get_browser() para analizar la información del navegador.Browscap.ini arrojando un error al cargar PHP (línea de comando - PHP_CLI)

Aquí es lo que hice:

cd /etc/php5/cli/conf.d 
[email protected]:/etc/php5/cli/conf.d$ sudo wget http://browsers.garykeith.com/stream.asp?Lite_PHP_BrowsCapINI -O browscap.ini 
2011-09-30 15:14:18 (890 KB/s) - `browscap.ini' saved [185384/185384] 

A continuación, la tarea programada de ejecución:

php /usr/local/cron/summarizeStats.php --option=browserStats --date=yesterday 

y me sale este error:

PHP: syntax error, unexpected $end, expecting ']' in /etc/php5/cli/conf.d/browscap.ini on line 51 

¿Qué estoy haciendo mal? Gracias

+0

Acabo de descargar el archivo más reciente browsecap para php, y es más de 20.000 líneas, por lo que si está diciendo final inesperado $ en la línea 51, a continuación, el archivo que tiene es incompleta. $ $ Inesperado significa que php encontró el final de un archivo cuando no lo esperaba. ¿Descargó el archivo browsecap que es compatible con PHP? Aquí hay un enlace a la [última php browsecap.ini] (http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI) – drew010

Respuesta

26

Aparentemente ahora hay un error con esos archivos browsecap. Parece que contienen puntos y comas sin escote ";" en la especificación del navegador Usted puede arreglar que el uso de este pequeño script:

<?php 
$browsecap = file('browscap.ini'); 
foreach($browsecap as &$row) 
    if ($row[ 0 ] == '[') 
     $row = str_replace(';', '\\;', $row); 

file_put_contents('fixed_browscap.ini', $browsecap); 
+1

Gracias, funciona :) – Tech4Wilco

+0

No funcionó para mí. IEs donde no se reconocen. Reemplacé los puntos y comas con asteriscos dentro de mi script de shell y funcionó de nuevo. Ejemplo: 'sed -e '/^\ [/ s /;/*/g' /etc/php5/apache2/browscap_orig.ini> /etc/php5/apache2/browscap.ini sed -i"/^ \ [/ s/'/ */g "/ etc/php5/apache2/browscap.ini' –

0

sed se puede utilizar para escapar del punto y coma, así:

sed 's/;/\\\;/g' browscap.ini > browscap_escape.ini 

Esto cogerá todos los comentarios así pero se puede usar sed nuevo atrapar esos.

Como se describe aquí github.com/browscap/browscap/issues/119

Cuestiones relacionadas