3

Googleドライブに接続してウェブサイトのファイルとデータベースをGoogleドライブアカウントに定期的にバックアップするcpanelのcronジョブがあります。問題を特定するためにファイルを単純化しました。

<?php

set_time_limit(0);

require_once 'google-api-php-client/Google_Client.php';
require_once 'google-api-php-client/contrib/Google_DriveService.php';

$client = new Google_Client();
$client>setClientId('xxxx');
$client->setClientSecret('xxxx');
$service = new Google_DriveService($client);

$accessToken = '{ "access_token" : "xxx", "token_type" : "Bearer", "expires_in" : 3600, 
"refresh_token" : "1/xxx" }';
$client->setAccessToken($accessToken);

$files = $service->files->listFiles();

print($files);

 ?>

更新トークンとアクセストークンを認証して取得し、変数に入れました$accessToken。スクリプトはブラウザーから実行すると機能しますが、cron ジョブとして設定すると、次のエラーが発生します。

[13-Jul-2013 13:41:02 Europe/Moscow] PHP Fatal error:  Uncaught exception 
'Google_IOException' with message 'HTTP Error: (0) error setting certificate verify     
locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
' in /home/xxxxxx/backup/google-api-php-client/io/Google_CurlIO.php:128
Stack trace:
#0 /home/xxxxxx/backup/google-api-php-client/auth/Google_OAuth2.php(270):    
Google_CurlIO->makeRequest(Object(Google_HttpRequest))
#1 /home/xxxxxx/backup/google-api-php-client/auth/Google_OAuth2.php(248): 
Google_OAuth2->refreshTokenRequest(Array)
#2 /home/xxxxxx/backup/google-api-php-client/Google_Client.php(315): 
Google_OAuth2->refreshToken('1/xxxxxx...')
#3 /home/xxxxxx/backup/index.php(20): Google_Client-   
>refreshToken('1/xxxxxx...')
#4 {main}
thrown in /home/xxxxxx/backup/google-api-php-client/io/Google_CurlIO.php on line   
128
4

3 に答える 3

5

これと同じ問題があり、権限を変更しましたが、それでも機能しませんでした。その後、この解決策を見つけました

「google-api-php-client\src\io\」フォルダ内の「apiCurlIO.php」を開きます。 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); を置き換えます。curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

このリンクで、それは私のために働いた。

于 2014-01-16T09:47:41.660 に答える
1

cUrl は証明書を宛先に書き込めません。

$ chmod 755 /etc/pki/tls/certs

または、書き込み権限を持つ証明書の新しい宛先を明示的に設定します。

于 2013-07-16T07:47:01.083 に答える
0

長時間実行されている Google Drive API ジョブでは、スクリプトが新しいファイルを開くことができないため、このエラーでスクリプトがクラッシュすることも見てきました。

于 2015-04-21T05:44:05.147 に答える