2013-07-13 6 views
3

У меня есть задание cron в cpanel, которое подключается к Google Drive для регулярного резервного копирования файлов веб-сайта и базы данных на учетную запись Google. Я упростил файл, чтобы определить проблему:Ошибка API Google Диска в задании 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. Скрипт работает при запуске из браузера, но когда я установить его как хроны я получаю следующие ошибки:

[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 
+0

Различные настройки cUrl на cron? Он не может проверить сертификат для SSL. – peter

+0

так как интерпретировать это или любое исправление? –

ответ

1

Curl косяк написать сертификат к месту назначения.

$ chmod 755 /etc/pki/tls/certs 

Или явным образом устанавливаю новый пункт назначения для сертификатов, которые имеют разрешения на запись.

+0

В моем ftp я обнаружил, что в папке/etc/нет этого пути вообще ... Не знаю, почему ... Я предполагаю, что мой хостинг не поддерживает сертификаты ssl, поскольку у меня нет этой опции в моем cpanel –

5

У меня была эта же проблема и я изменил разрешения, но все равно не смог заставить ее работать. Затем я нашел это решение

В «Google-апи-PHP-клиент \ SRC \ ю \» папку, откройте «apiCurlIO.php» Заменить curl_setopt ($ ч, CURLOPT_SSL_VERIFYPEER, правда); с curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);

на этом link, и это сработало для меня.

+0

спасибо, что вы сделали мой день –

0

При работе с API Google Диска с длительным сроком действия я также видел, как сценарии вылетают с ошибкой, поскольку они не могут открыть новые файлы.

Смежные вопросы