【问题标题】:bigquery php client not working with Apache web page (Ubuntu 18.10 server)bigquery php 客户端不适用于 Apache 网页(Ubuntu 18.10 服务器)
【发布时间】:2018-12-30 10:12:00
【问题描述】:

我在 Ubuntu 18.10 服务器上有一个可使用 Php 7 页面的 Apache 2.4 网站。

我的示例基于: https://cloud.google.com/bigquery/docs/quickstarts/quickstart-client-libraries#client-libraries-install-php

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

php filex.php 

bigquery 有效,我可以看到数据。 当我尝试从 apache Web 服务器查看它时,页面的第一部分呈现然后出现错误并且缺少 bigquery 部分。

/var/log/apache2 中的错误

PHP 致命错误未捕获的 Google Cloud 异常

【问题讨论】:

    标签: php apache ubuntu google-bigquery


    【解决方案1】:

    我猜这是 Apache 与我的用户 ID 的权限问题。 由于目录权限,我认为 Apache 可能难以访问 Bigquery php 客户端文件。

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

    我看过这里: https://help.ubuntu.com/community/EnvironmentVariables 并设置系统范围的环境变量 /etc/环境

     GOOGLE_APPLICATION_CREDENTIALS="/bigquery/project1/accountdetails-xxxxxxxxxxxx.json"
    

    以userx登录时可见

     echo $GOOGLE_APPLICATION_CREDENTIALS
    

    然后我遇到了 https://medium.com/@william.b/setting-dynamic-environmental-variables-in-apache-from-the-os-1d5c1e2e9e6c

    这给了我解决方案

     nano /etc/apache2/envvars
    

    我将这一行添加到(主要是空的)脚本的底部

    export GOOGLE_APPLICATION_CREDENTIALS="/bigquery/project1/accountdetails-xxxxxxxxxxxx.json"
    

    我重新启动了服务器。 现在网页可以正常工作了。

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

    Nginx

    nginx 也需要配置才能工作(Ubuntu 18.10,nginx 1.14。)

    来自 https://medium.com/@tomahock/passing-system-environment-variables-to-php-fpm-when-using-nginx-a70045370fad

    /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 文件......和这样,一个服务器甚至可以有超过 1 个单个项目 - 这在设置全局时是不可能的环境变量 - 这也限制了脚本的可移植性(例如,一个共享主机没有机会这样做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    相关资源
    最近更新 更多