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