5

: Ben çeşitli yapılandırmaları denediGoogle Cloud API - Uygulama Varsayılan kimlik bilgileri aşağıdaki kod, <a href="https://developers.google.com/identity/protocols/application-default-credentials" rel="noreferrer">Google's documentation</a> den değiştirdiniz

PHP Fatal error: Uncaught exception 'DomainException' with message 'Could not load the default credentials. Browse to https://developers.google.com/accounts/docs/application-default-credentials for more information' 

: Bunu çalıştırdığınızda

 $GOOGLE_APPLICATION_CREDENTIALS = "./[path].json"; 
     $_ENV["GOOGLE_APPLICATION_CREDENTIALS"] = "./[path].json"; 
     $_SERVER["GOOGLE_APPLICATION_CREDENTIALS"] = "./[path].json"; 

     $projectId = "[my project's ID']"; 
     $client = new Google_Client(); 
     $client->useApplicationDefaultCredentials(); 
     $client->setScopes(['https://www.googleapis.com/auth/books']); 
     $service = new Google_Service_Books($client); 
     $results = $service->volumes->listVolumes('Henry David Thoreau'); 

Oysa hata verir örneğin dosyanın yolunu değiştirerek. Gördüğünüz gibi, hemen düşünebildiğim üç farklı değişken biçimini de yaptım (iki ortam, biri değil).

sonraki bakmak nerede tam emin değilim. Ortam değişkenini farklı bir şekilde belirlemem gerekir mi yoksa yolu farklı bir şekilde mi tanımlamalıyım? Bunu yapmanın doğru yolları nelerdir? Hatanın başka bir nedeni var mı?

+0

Alındığı? Windows/Apache sistemde Yerel – Adam

+0

@Adam. Ancak, bir Linux/NGINX sisteminde çalışacak bir şey yapıyorum. – laef

cevap

13

yerine sen ($_ENV veya $_SERVER) kullanmış yöntemlerden birini kullanmaya çalışmakla putenv() (http://php.net/manual/en/function.putenv.php) kullanmak gerekir. Eğer (örn. App Engine eşya veya dev, Bilişim Altyapısı lokal) kodu çalıştıran yerlerde

https://github.com/google/google-api-php-client/blob/master/UPGRADING.md#google_auth_assertioncredentials-has-been-removed

// OR use environment variables (recommended) 

putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json'); 
$client->useApplicationDefaultCredentials(); 
+1

okuyunuz “[İyi bir cevap yazmak nasıl] (http://stackoverflow.com/help/how-to-answer)” fusion3k @ – fusion3k

+0

benim cevap herhangi bir sorun göremiyorum. Tamam, kısa, ama "yolu farklı bir şekilde tanımlamalı mıyım?" Diye sordular. ve cevabım, yolu farklı bir şekilde nasıl tanımlayacağınızı gösteriyor, böylece soruyu cevaplıyor. Cevabımın açıklayıcı olduğuna ve başka bir açıklama gerektirmediğine inanıyorum. "Kıskançlık kabul edilebilir". Cevabı nasıl iyileştirebileceğimi düşündüğünüzü duyduğuma sevindim. Her şeyden –

+0

Öncelikle: Cevabınız biri o kendini açıklayıcı 'olmadığını düşünüyorum daha böylece ‘belirsiz’ olarak birden fazla kullanıcı tarafından rapor edilmiştir. Benim için - ve belki OP için - cevap kendini açıklıyor, ancak bu site gibi-sohbet edilmez, sorular ve cevaplar gelecek ziyaretçiler için de mevcut: size katılıyorum edebilirsiniz. Daha iyi bir cevap şöyle olabilir: “Ortam değişkeni ayarlamak için denemeniz geçerli değil, yerine bu sözdizimini kullanmak zorundasınız ... $ _ENV, daha fazla ayrıntı için dokümanlara bakın ... vs.” anlamına gelir. Pek çok yol var, ama “izleyici” bir kod satırından daha fazlasını istiyor. – fusion3k

0
I agree with above answer only want to describe if user getting error in php using nlp google 
    <?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

# Includes the autoloader for libraries installed with composer 
require __DIR__ . '/vendor/autoload.php'; 

# Imports the Google Cloud client library 
use Google\Cloud\Language\LanguageClient; 
putenv('GOOGLE_APPLICATION_CREDENTIALS=/home/sgupta/www/practise/nlp/google/cred.json'); //your path to file of cred 
//$client->useApplicationDefaultCredentials(); 
# Your Google Cloud Platform project ID 
$projectId = 'nlp-project-nname'; //your project name 

# Instantiates a client 
$language = new LanguageClient([ 
    'projectId' => $projectId 
]); 

# The text to analyze 
$text = 'Sachin Tendulkar'; 



# Detects the sentiment of the text 
$annotation = $language->analyzeSentiment($text); 
$sentiment = $annotation->sentiment(); 
echo "<pre>"; 
print_r($annotation); die; 

echo 'Text: ' . $text . ' 
Sentiment: ' . $sentiment['score'] . ', ' . $sentiment['magnitude']; 
?> 
İlgili konular