bigquery php客户端不使用Apache网页(Ubuntu 18.10服务器)

bigquery php客户端不使用Apache网页(Ubuntu 18.10服务器),php,apache,ubuntu,google-bigquery,Php,Apache,Ubuntu,Google Bigquery,我有一个Apache2.4网站,可以在Ubuntu 18.10服务器上使用PHP7页面 我的例子基于: 当我从命令行以我的身份运行页面时 php filex.php bigquery可以工作,我可以看到数据。 当我尝试从ApacheWeb服务器查看它时,页面的第一部分呈现,然后出现错误,bigquery部分丢失 /var/log/apache2中出现错误 PHP致命错误未捕获Google云异常我猜这是Apache与我的用户ID之间的权限问题。 我认为Apache访问BigQueryPHP客

我有一个Apache2.4网站,可以在Ubuntu 18.10服务器上使用PHP7页面

我的例子基于:

当我从命令行以我的身份运行页面时

php filex.php 
bigquery可以工作,我可以看到数据。 当我尝试从ApacheWeb服务器查看它时,页面的第一部分呈现,然后出现错误,bigquery部分丢失

/var/log/apache2中出现错误


PHP致命错误未捕获Google云异常

我猜这是Apache与我的用户ID之间的权限问题。 我认为Apache访问BigQueryPHP客户机文件时可能会遇到困难,原因是目录权限

但是,问题是我没有正确设置环境变量

我在这里看过: 并设置系统范围的环境变量 /etc/环境

 GOOGLE_APPLICATION_CREDENTIALS="/bigquery/project1/accountdetails-xxxxxxxxxxxx.json"
它在以userx身份登录时可见

 echo $GOOGLE_APPLICATION_CREDENTIALS
然后我遇到了

这给了我解决办法

 nano /etc/apache2/envvars
我将该行添加到(主要是空的)脚本的底部

我重新启动了服务器。 现在,该网页可以按预期工作

===================

Nginx

nginx还需要配置才能工作(ubuntu18.10,nginx 1.14)

/etc/php/7.2/fpm/pool.d$

编辑www.conf

uncomment 
;clear_env = no
加行

env[GOOGLE_APPLICATION_CREDENTIALS] = /bigquery/project1/accountdetails-xxxxxxxxxxxx.json

重新启动了nginx,它工作了。

这相当复杂,因为可以在PHP中加载
.json
文件。。。与此类似,每个服务器甚至可以有一个以上的项目-这在设置全局环境变量时是不可能的-这也限制了脚本的可移植性(例如,一个共享宿主脚本将没有机会这样做)。
env[GOOGLE_APPLICATION_CREDENTIALS] = /bigquery/project1/accountdetails-xxxxxxxxxxxx.json