2015-02-05 3 views
6

मैं अपनी वेबसाइट की लॉगिन प्रणाली को LightOpenID से Google के Oauth 2.0 में अपडेट कर रहा हूं।Oauth2 लॉगिन कार्यान्वित करना, घातक त्रुटि: कक्षा 'Google_Service' नहीं मिली

जब मैं Client.php और सेवा की आवश्यकता होती है/Oauth2.php मैं एक त्रुटि

Fatal error: Class 'Google_Service' not found in /home/myname/repos/website_current/lib/google-api-php-client/src/Google/Service/Oauth2.php on line 32

कोड मैं (मेरे login.php फ़ाइल से) का उपयोग कर रहा इस

require_once(dirname($_SERVER['DOCUMENT_ROOT']).'/lib/autoload.php'); 
require('Google/Client.php'); 
require('Google/Service/Oauth2.php'); 
echo "exit"; 
exit(); 
तरह लग रहा है मिल

मैं (/etc/php5/apache2/php.ini में) php.ini में शामिल पथ को शामिल किया है के रूप में

include_path = ".:/usr/local/lib/php:/home/myname/repos/website_current/lib/google-api-php-client/src" 

तो इसकी मेरी OAuth2 लगता है .php फ़ाइल किसी अन्य में शामिल नहीं हो सकती है जिसमें 'Google_Service' श्रेणी शामिल है जो 'Service.php' में एक फ़ोल्डर है।

मेरे फ़ोल्डर संरचना इस तरह दिखता है:

lib/ 
... autoload.php 
... functions.php 
... google-api-php-client/ 
    ... src/ 
     ... Google/ (etc etc) 
public_html/ 
... login/ 
    ...login.php 

मुझे पता नहीं क्यों यह उत्पन्न कर रहा है। पथ शामिल होना चाहिए, और phpinfo() का उपयोग कर एक शामिल पथ के रूप में दिखाई देता है; क्या कोई मुझे कुछ अंतर्दृष्टि दे सकता है?

उत्तर

2

अनुदेश प्रति github पर:

require_once 'google-api-php-client/autoload.php'; // or wherever autoload.php is located

आपके मामले में यह ऊपर की तरह लगता है शामिल यूआरएल ठीक काम करना चाहिए।

+0

मुझे भी autoload.php की आवश्यकता है। इसे उपरोक्त कोड में जोड़ने के लिए भूल गए (उपरोक्त संपादन देखें)। क्या autoload एक specfiic जगह में होना चाहिए? शायद Oauth2.php फ़ाइल कक्षाओं को ठीक से लोड नहीं कर सकती है? – Gambles

18

सुनिश्चित करें कि आप से पहले किसी अन्य Google "require_once" पंक्तियों को जोड़ लें।

require_once 'google-api-php-client/autoload.php'; 

मेरे पास यह आखिरी था और यह मुझे 10 मिनट के लिए मेरे सिर को खरोंच कर रहा था।

+6

autoload.php स्थानांतरित कर दिया गया है - अब उपयोग करें: requ_once 'Google/autoload.php'; –

0

अब इसे बहिष्कृत किया गया है और उप Google निर्देशिका में स्थानांतरित कर दिया गया है। निम्नलिखित Durandal मैं इसे करने की कोशिश क्या था के बाद google-api-php-client-master\src\Google\autoload.php

0

, लेकिन मेरे लिए नया मार्ग है: के बाद नया डिफ़ॉल्ट पथ है

require_once 'google-api-php-client/src/Google/autoload.php'; 

एक बार मैं इस बदल यह काम कर दिया। सहायता के लिए धन्यवाद।

2

करने का नया तरीका यह (लगभग जल्दी 2016)

require_once("Google/autoload.php"); 

है

(यह मानते हुए आप पहले से ही निर्धारित किया है अपने पथ शामिल करने के लिए/पथ// google-api-php-क्लाइंट/src करने के लिए)
+0

यह सुनिश्चित नहीं है कि आप इसे देखेंगे, लेकिन जब मैं ऑटोलोड जोड़ता हूं तो मुझे यह त्रुटि मिलती है यह लाइब्रेरी संगीतकार के माध्यम से या पूर्ण पैकेज डाउनलोड करके स्थापित की जानी चाहिए। क्या मेरे पास पहले से पूरा पैकेज नहीं है? – JianYA

-1

है गूगल API एकीकरण के साथ काम करते हुए

Fatal error: Class 'abc' not found

त्रुटि तब होती है जब आपके पास composer.json में लाइब्रेरी के बीच निश्चित रूप से कुछ अलग होता है, और वास्तव में लाइब्रेरी जो स्वत: लोड हो रही है।

एक ही समस्या सिर्फ अपनी composer.json

{"require": {"google/apiclient": "1.0.*@beta"}} 

को
{"require": {"google/apiclient": "2.0.*"}} 

में बदल गया था और उसके बाद php composer.phar update नवंबर 2016 के रूप में

2

(सुनिश्चित करें कि आप .phar फ़ाइल के लिए सही रास्ता दे कर) पर अमल

require_once ... 'vendor/autoload.php'; 
+0

आधिकारिक निर्देशों के अनुसार, आप सही हैं लेकिन यह मेरे लिए काम नहीं कर रहा है। वे इसे इतना जटिल बनाते हैं! –

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