2011-09-30 10 views
11

मेरे पास एक क्रोनबॉज है जो ब्राउज़र के आंकड़ों को सारांशित करता है। यह cronjob डेटा लोड करता है और फिर ब्राउज़र जानकारी को पार्स करने के लिए get_browser() PHP फ़ंक्शन का उपयोग करता है।ब्राउज लोडिंग करते समय एक त्रुटि फेंकना (कमांड लाइन - 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] 

फिर 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 

क्या मैं गलत कर रहा हूँ? धन्यवाद

+0

मैं सिर्फ php के लिए नवीनतम browsecap फ़ाइल डाउनलोड की है, और यह 20,000 से अधिक लाइनों है, इसलिए यदि यह लाइन 51 पर अप्रत्याशित $ अंत कह रहा है, तो फ़ाइल आपके पास अधूरा है। अप्रत्याशित $ end का अर्थ है कि PHP को उस फ़ाइल के अंत का सामना करना पड़ा जब इसकी अपेक्षा नहीं थी। क्या आपने ब्राउज़पैक फ़ाइल डाउनलोड की है जो PHP संगत है? यहां [नवीनतम php browscap.ini] का एक लिंक है (http://browsers.garykeith.com/stream.asp?PHP_BrowsCapINI) – drew010

उत्तर

26

अभी भी उन ब्राउज़ैप फ़ाइलों के साथ एक त्रुटि है। वे अनचाहे अर्धविराम शामिल हैं ";" ब्राउज़र spec में। आप ठीक कर सकते हैं कि इस छोटे से स्क्रिप्ट का उपयोग:

<?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

मेरे लिए काम नहीं किया। आईईएस जहां मान्यता नहीं है। मैंने अर्धविरामों और टिकों को मेरी शेल स्क्रिप्ट के अंदर तारों के साथ बदल दिया और यह फिर से काम किया। उदाहरण: '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