2011-09-30 12 views
11

ブラウザの統計情報をまとめたクロムジョブがあります。このcronジョブはデータをロードし、get_browser()PHP関数を使用してブラウザ情報を解析します。その後PHPをロードするときにBrowscap.iniにエラーが発生する(コマンドライン - PHP_CLI)

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] 

cronジョブを実行します:ここで

は、私がやったことだ

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 

は私が間違って何をしているのですか?ありがとう

+0

私は、PHPの最新browsecapファイルをダウンロードし、それが20,000以上のラインなので、それはライン51で予期しない$エンドを言っている場合は、あなたが持っているファイルが不完全です。予期しない$ endは、PHPが期待していないときにファイルの終わりに遭遇したことを意味します。 PHP互換のbrowsecapファイルをダウンロードしましたか?ここに[最新のphp browsecap.ini](http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI)へのリンクです – drew010

答えて

26

これらのbrowsecapファイルには一見誤りがあります。彼らはエスケープされていないセミコロンを含んでいるようです ";"ブラウザ仕様で

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

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

ありがとう作品:) – Tech4Wilco

+0

私のために働かなかった。 IEsは認識されません。私はセミコロンとティックをシェルスクリプト内のアスタリスクに置き換えました。例: '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はそうのようなセミコロンエスケープするために使用することができます:あなたはこの小さなスクリプトを使用していることを修正することができます

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

これは、同様にすべてのコメントをキャッチするのが、あなたは再びsedを使用することができますそれらをキャッチする。

は、ここで説明したようにgithub.com/browscap/browscap/issues/119

関連する問題