Browscap.ini бросает ошибку при загрузке PHP (командной строки - PHP_CLI)

У меня есть cronjob, который суммирует статистику браузера. Этот cronjob загружает данные, а затем использует функцию get_browser() PHP для анализа информации браузера.

Вот что я сделал:

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]

Затем запустите cronjob:

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

и я получаю эту ошибку:

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

Что я делаю неправильно? Благодаря

Ответ 1

Кажется, что сейчас есть ошибка с этими файлами в браузере. Кажется, что они содержат нескончаемые точки с запятой ";" в спецификации браузера. Вы можете исправить это, используя этот маленький script:

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

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

Ответ 2

sed можно использовать, чтобы избежать полуколонии так:

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

Это также уловит все комментарии, но вы можете снова использовать sed, чтобы поймать их.

Как описано здесь github.com/browscap/browscap/issues/119