Php-клиент bigquery не работает с веб-страницей Apache (сервер Ubuntu 18.10)

У меня есть рабочий веб-сайт 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 Неперехваченное исключение Google Cloud

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
116
1

Ответы 1

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

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

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

 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, и он сработал.

это довольно сложно, потому что этот файл .json можно загрузить в PHP ... и, как это, можно даже иметь более одного проекта на сервер - что невозможно при установке глобальных переменных среды - и это также ограничивает переносимость сценарий (например, у одного виртуального хостинга не было бы шанса сделать это).

Martin Zeitler 31.12.2018 00:41

Другие вопросы по теме