2015-02-05 8 views
6

मैं एक साइट अपाचे बस निम्नलिखित कोड है कि का उपयोग कर:पीएचपी घातक त्रुटि: क्लास 'MongoClient' नहीं मिला

<?php $m = new MongoClient(); ?> 

और जब मैं यह तक पहुँचने का प्रयास, मैं error.log

में त्रुटि मिलती है
`PHP Fatal Error: Class 'MongoClient' not found` 

निम्नलिखित सेटिंग्स हैं जो गलत हो सकती हैं, लेकिन मुझे नहीं लगता है।

php -i | grep 'Configuration' =>Configuration File (php.ini) Path => /etc/php5/cli | Loaded Configuration File => /etc/php5/cli/php.ini

grep 'mongo' /etc/php5/cli/php.ini =>extension=mongo.so

php -i | grep 'extension' => extension_dir => /usr/lib/php5/20121212 => /usr/lib/php5/20121212

ls /usr/lib/php5/20121212/ | grep 'mongo.so' =>mongo.so

मैं मैं स्थापित सुझाव देने के लिए कुछ भी नहीं मिल पाई किया गया यह गलत है या गलत तरीके से कॉन्फ़िगर किया गया है। मैं यह पिछले दो pecl और pear (sudo pear install -f pecl/mongo और sudo pecl install mongo) का उपयोग घंटे

मैं अपने अपाचे पुन: प्रारंभ किए और यहां तक ​​कि अपने कंप्यूटर को कई बार भीतर स्थापित किया।

तो मुझे त्रुटि Class 'MongoClient' not found क्यों मिल रही है?

मैं उबंटू पर हूं। PHP संस्करण 5.5।

संपादित करें: मैंने अभी पाया है कि जब मैं इंटरैक्टिव मोड में PHP चलाता हूं तो MongoClient मान्य है। शायद इसे उपयोगकर्ता अनुमति/उपयोगकर्ता स्थापना समस्या के साथ करना है?

+2

निम्नलिखित यही सवाल XAMPP, जो मैं नहीं कर रहा हूँ उपयोग कर रहा है की मदद से किया है, और समाधान किया जा रहा समाप्त हो गया एक .dll निर्दिष्ट करने में एक समस्या है, जबकि मैं लिनक्स पर हूं। इसके अतिरिक्त, सबकुछ एकमात्र उत्तर लाता है, मेरे प्रश्न में संबोधित किया जाता है। –

+1

'/ usr/lib/php5/20121212/mongo.so' की अनुमतियों की जांच करें - वे निर्देशिका में अन्य फ़ाइलों की अनुमति के समान होना चाहिए। 'Php'' mongo.so' को खोलने का प्रयास करते समय भी वास्तव में विफल होने पर यह देखने के लिए आप 'स्ट्रेस' चला सकते हैं। जैसे 'strace -f php test.php 2> और 1 | grep 20121212' – VolenD

+0

@ user3584460 प्रतिक्रिया के लिए धन्यवाद। अनुमतियां मूल रूप से वही थीं (644 के बजाय 664) लेकिन मैंने उन्हें बिल्कुल वही बदल दिया और कोई समस्या नहीं है। दूसरे भाग के लिए, कोई मुद्दा नहीं प्रतीत होता है क्योंकि यह तब काम करता है जब मैं इसे अपने जैसा चला रहा हूं। मुझे लगता है कि मैंने सवाल को भ्रमित कर दिया है, क्योंकि मैंने यह निर्दिष्ट नहीं किया है कि यह एक समस्या है जब अपाचे (उपयोगकर्ता www-data) PHP चल रहा है, न कि जब मैं हूं। –

उत्तर

5

समस्या यह थी कि मैं .ini फ़ाइल खोजने के लिए php -i | grep 'Configuration' का उपयोग कर रहा था। यह /etc/php5/cli/php.ini पर ले जाता है। पूर्व-निरीक्षण में, यह एक स्पष्ट त्याग होना चाहिए था: cli का अर्थ है कमांड लाइन इंटरफ़ेस, मूल रूप से दुभाषिया के लिए। मुझे जो चाहिए वह आईएनआई फाइल थी जिसे अपाचे का उपयोग कर रहा था।

दुर्भाग्य से, वहाँ यह करने के लिए के रूप में मैं www-data उपयोगकर्ता में लॉग इन नहीं कर सकता है कोई अच्छा तरीका था, लेकिन मैं एक फ़ाइल है कि कोड

<?php 
    phpinfo(); 
?> 

था बनाया और कहा कि पता चला है कि .ini फ़ाइल स्थान वास्तव में /etc/php5/apache2/php.ini था।

एक बार मैं extension=mongo.so साथ कि INI फ़ाइल अद्यतन, मॉड्यूल स्टार्टअप पर लोड किया गया था, तो मैं पुन: प्रारंभ करने और सब कुछ अब काम कर रहा है।

+0

यह 100% सच है। मेरे लिए यह था: "/etc/php5/fpm/php.ini" – Rav

1

मैं निम्न क्रम

sudo apt-get install mongodb 

sudo service mongodb start 

mongo 

sudo pecl install mongo 

cd /build/buildd/php5-5.5.9+dfsg/pear-build-download 

sudo tar zxvf mongo-1.6.8.tgz 

cd mongo-1.6.8 

sudo phpize 

cd ./configure 

sudo make install 

sudo gedit /etc/php5/apache2/php.ini 

add extension=mongo.ini inphp.ini 

sudo gedit/etc/php5/apache2/conf.d/mongodb.ini 

add extension=mongo.so 

sudo service apache2 restart 

का उपयोग कर यह किया और यूआरएल

http://www.w3resource.com/mongodb/install-php-driver.php

+0

ऐसा लगता है कि आप दो बार स्थापना कर रहे हैं। 1) "सुडो pecl इंस्टॉल mongo" का उपयोग कर। 2) "कॉन्फ़िगर करें, इंस्टॉल करें" का उपयोग कर। दूसरा, आप पहले php.ini से mongodb.ini तक एक्सटेंशन को क्यों लिंक करते हैं और फिर वहां एक्सटेंशन जोड़ते हैं? –

संबंधित मुद्दे