【问题标题】:`Invalid grant` error when cron runs website backup google drive api scriptcron 运行网站备份 google drive api 脚本时出现“无效授权”错误
【发布时间】:2018-07-06 10:13:31
【问题描述】:

我正在尝试备份我网站的文件和数据库,并通过 Google drive Api 从我的网站上传到 Google Drive。

按照这些链接遵循说明 - backup files to google drive using php https://www.matthewhipkin.co.uk/codelib/automatically-backing-up-your-web-server-files-to-googledrive-with-php/ 并做了以下 -

  1. https://github.com/hippy2094/backuptogoogledrive 下载了backupgoogledrive 文件夹并将其上传到我的public_html/backup 文件夹中,并将backuptogoogle.php 重命名为backup/index.php

  2. 我创建了客户端 ID、客户端密码和 authCode,并将它们与我的 MySQL 用户名、密码和数据库名称一起放入 setting.inc。 $homedir 设置为/home/myuser/,$sitedir 设置为public_html/

  3. 然后,我在 SSH 中运行 - php /home/user/backup/index.php

    这运行良好,生成了一个 json 文件,并且在谷歌驱动器中也找到了文件和数据库的备份。

  4. 然后,我按如下方式设置 cron 作业 - 5 0 * * 6 /usr/local/bin/php /home/myusername/public_html/backup/index.php

    这应该在星期六 00:05 运行脚本,但它没有运行或备份到谷歌驱动器。

  5. 之后,我将 cron 更改为每 15 分钟运行一次。我注意到文件和数据库备份将转到 home/myuser 文件夹而不是谷歌驱动器,并且该文件夹中的 error_log 每 15 分钟出现一次此错误 -

致命错误:带有消息的未捕获异常“Google_AuthException” '获取 OAuth2 访问令牌时出错,消息:'invalid_grant'' /home/myuser/public_html/backup/google-api-php-client/src/auth/Google_OAuth2.php:115

堆栈跟踪:

#0 /home/myuser/public_html/backup/google-api-php-client/src/Google_Client.php(127): Google_OAuth2->authenticate(Array, '4/SCxgUoxjnbe_0...')

#1 /home/myuser/public_html/backup/index.php(38): Google_Client->authenticate('4/SCxgUoxjnbe_0...')

#2 {main} 投入 /home/myuser/public_html/backup/google-api-php-client/src/auth/Google_OAuth2.php 在第 115 行`

请注意,在https://console.developers.google.com/apis 注册 Google API 时,我在凭据页面中选择了 Other 选项,而不是 Web Application,因为我的目标只是为我的网站备份。此外,当我选择 Web Application 选项并生成客户端 ID 和机密并尝试通过 SSH 中生成的 url 生成 authCode 时,它​​会在 SSH 生成的 url 中出现错误。因此,其他帖子中提到的invalid grant 的解决方案对我不起作用,因为我没有设置回调网址的选项。

请告诉我我做错了什么。为什么我能够手动而不是通过 cron 成功运行脚本?当我在 SSH 中手动运行脚本时。只有在 cron 运行时才会出现问题。

提前致谢。

【问题讨论】:

    标签: php cron google-drive-api


    【解决方案1】:

    找到以下解决方案 -

    将这段代码放入文件index.php -

      chdir('/home/user/backup');
    

    然后 cron 将文件正确备份到谷歌驱动器。所以,问题出在 cron 路径上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-17
      相关资源
      最近更新 更多