2011-09-30 11 views
11

Ho un cronjob che riassume le statistiche del browser. Questo cronjob carica i dati e quindi utilizza la funzione PHP get_browser() per analizzare le informazioni del browser.Browscap.ini lanciare un errore durante il caricamento di PHP (riga di comando - PHP_CLI)

Ecco quello che ho fatto:

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] 

Poi la corsa cronjob:

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

e ottengo questo errore:

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

Che cosa sto facendo di sbagliato? Grazie

+0

Ho appena scaricato il file browsecap più recente per php, ed è più di 20.000 linee, quindi se si sta dicendo $ fine inaspettata alla riga 51, quindi il file che hai è incompleta. Un fine $ imprevisto significa che php ha incontrato la fine di un file quando non se lo aspettava. Hai scaricato il file browsecap compatibile con PHP? Ecco un link al [ultimo php browsecap.ini] (http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI) – drew010

risposta

26

Apparentemente in questo momento c'è un errore con quei file di browset. Sembrano contenere punti e virgola senza caratteri ";" nella specifica del browser È possibile risolvere che con questo piccolo 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

Grazie funziona :) – Tech4Wilco

+0

Non ha funzionato per me. IE in cui non sono riconosciuti. Ho sostituito il punto e virgola con gli asterischi all'interno del mio script shell e ha funzionato di nuovo. Esempio: '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 può essere usato per sfuggire al punto e virgola in questo modo:

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

Ciò catturare tutti i commenti pure ma si potrebbe usare sed di nuovo per catturare quelli

Come descritto qui github.com/browscap/browscap/issues/119

Problemi correlati