PHP-клиент bigquery не работает с веб-страницей Apache (сервер Ubuntu 18.10) - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть работающий веб-сайт Apache 2.4, который работает с страницами Php 7 на сервере Ubuntu 18.10.

Мой пример основан на: https://cloud.google.com/bigquery/docs/quickstarts/quickstart-client-libraries#client-libraries-install-php

Когда я запускаю страницу какменя из командной строки

php filex.php 

bigquery работает, и я могу видеть данные.Когда я пытаюсь просмотреть его с веб-сервера apache, отображается первая часть страницы, то возникает ошибка, а часть bigquery отсутствует.

Ошибка в / var / log / apache2

Неустранимая ошибка PHP Uncaught Google Cloud Exception

1 Ответ

0 голосов
/ 30 декабря 2018

Я догадался, что это проблема с разрешениями Apache против моего идентификатора пользователя.Я подумал, что у Apache могут возникнуть проблемы с доступом к файлам клиента Bigquery php из-за прав доступа к каталогу.

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

Я посмотрел здесь:https://help.ubuntu.com/community/EnvironmentVariables и установите общесистемные переменные среды / etc / environment

 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 и все заработало.

...