PHP 脚本在终端中手动运行时执行正常,但在 cPanel 中执行 cron 时会出错

问题描述 投票:0回答:1

我正在尝试运行 cron 作业来执行 PHP 脚本。我尝试执行的 cron 命令是

/usr/local/bin/php -q /home/domain/public_html/apps/app.php >> /home/domain/public_html/logs/cron.log
。运行作业时,出现以下错误:

Fatal error: Uncaught Google\Cloud\Core\Exception\GoogleException: Given keyfile path bigquery-keyfile.json does not exist in /home/domain/public_html/apps/vendor/google/cloud-core/src/ClientTrait.php:130
Stack trace:
#0 /home/domain/public_html/apps/vendor/google/cloud-core/src/ClientTrait.php(96): Google\Cloud\BigQuery\BigQueryClient->getKeyFile(Array)
#1 /home/domain/public_html/apps/vendor/google/cloud-bigquery/src/BigQueryClient.php(144): Google\Cloud\BigQuery\BigQueryClient->configureAuthentication(Array)
#2 /home/domain/public_html/apps/app.php(16): Google\Cloud\BigQuery\BigQueryClient->__construct(Array)
#3 {main}
  thrown in /home/domain/public_html/apps/vendor/google/cloud-core/src/ClientTrait.php on line 130

我确实注意到,如果我在终端中手动输入 cron 命令,我会得到相同的错误,但是如果我将目录更改为

/home/domain/public_html/apps/
并运行
php app.php >> /home/domain/public_html/logs/cron.log
甚至
/usr/local/bin/php app.php >> /home/domain/public_html/logs/cron.log
,脚本将运行没有任何问题.

bigquery-keyfile.json
文件与
app.php
位于同一目录中。不知道我错过了什么。我一直在到处寻找并仍在继续。任何意见是极大的赞赏。预先感谢您。

php google-bigquery cron cpanel
1个回答
0
投票

如果我要更改目录”-您已经回答了自己的问题。您正在运行的代码显然使用相对路径引用了相关文件,即假设它正在应用程序目录中运行。这并不罕见。 您可以考虑更新代码并尝试使用完全限定的路径引用该文件,或者在我看来,更好的解决方案是从它期望运行的目录运行它。将您的 cron 命令更新为如下所示:

cd /home/domain/public_html/apps/ && /usr/local/bin/php -q app.php >> ./logs/cron.log

© www.soinside.com 2019 - 2024. All rights reserved.