Не удается запустить учебник Google App Engine по PHP

#google-app-engine #google-app-engine-php

#google-app-engine #google-app-engine-php

Вопрос:

Я следую руководству GAE по PHP, но я не могу заставить локальный сервер разработчиков реагировать должным образом.

Я запускаю его с

dev_appserver.py --php_executable_path=/usr/bin/php --host=192.168.33.44 ./

и он запускается нормально. При просмотре http://192.168.33.44:8080/ журналов отображаются

INFO 2016-10-12 07:55:06,264 module.py:788] default: "GET / HTTP/1.1" 200 -

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

До сих пор я:

  • Пробовал PHP 5.5 и 5.6 (remi): без разницы
  • Вставьте поврежденный PHP helloworld.php : ошибок нет
  • Изменен обработчик на - url: / : пустая страница на /, страница 404 для любого другого URL
  • Очищенные документы Google: никакой помощи
  • Проверено в Google: никакой помощи
  • Спросил резиновую утку: никакой помощи

Я запускаю Centos 7.2 через Vagrant и Google Cloud SDK 129.0.0.

Любая помощь с благодарностью.

[ПРАВИТЬ]

Дополнительные данные по запросу

 $ which php
/usr/bin/php


$ /usr/bin/php -v
PHP 5.5.38 (cli) (built: Sep 19 2016 13:45:10)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies


$ which python
/usr/bin/python


$ /usr/bin/python -V
Python 2.7.5

$ cat app.yaml
runtime: php55
api_version: 1

handlers:
- url: /.*
  script: helloworld.php


$ cat helloworld.php
<?php

echo 'Hello, World!';


$ dev_appserver.py --php_executable_path=/usr/bin/php --host=192.168.33.44 ./


Updates are available for some Cloud SDK components.  To install them, please run:
$ gcloud components update

INFO     2016-10-13 08:21:22,699 devappserver2.py:769] Skipping SDK update check.
INFO     2016-10-13 08:21:22,730 api_server.py:205] Starting API server at: http://localhost:46453
INFO     2016-10-13 08:21:22,737 dispatcher.py:197] Starting module "default" running at: http://192.168.33.44:8080
INFO     2016-10-13 08:21:22,738 admin_server.py:116] Starting admin server at: http://localhost:8000
INFO     2016-10-13 08:21:34,142 module.py:788] default: "GET / HTTP/1.1" 200 -
  

Заголовки ответов из Chrome при доступе http://192.168.33.44:8080 /

 Cache-Control: no-cache
Content-Length: 0
Content-Type: text/html
Date: Thu, 13 Oct 2016 08:21:34 GMT
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Server: Development/2.0
  

Я обновился с 129 до 130, но существует та же проблема

Комментарии:

1. Чтобы охватить основы, опубликуйте полный вывод на консоль, опубликуйте свой app.yaml и опубликуйте содержимое файла обработчика скриптов. Кроме того, проверьте, какая версия PHP и Python у вас установлена.

2. Кажется действительно маловероятным, но если вы опустите параметр —host и установите значение localhost по умолчанию, у вас все равно будет тот же результат?

3. Привет, Крис! Получаете ли вы разумный вывод с порта 8000? Это страницы локального администратора разработчика.

4. @BrettJ попытался получить к нему локальный доступ через curl, но все равно получил пустой ответ и попадание в журналы доступа. Привет @Tom! Используя --admin_host=0.0.0.0 , я могу видеть страницу int instances. Начинается с одной записи. После первого запроса отображаются 2 запроса для исходного экземпляра (/ и favicon.ico) с другим указанным экземпляром. Исходный экземпляр увеличивается на 2 для каждого запроса, что соответствует активности журнала доступа

5. Попробуйте опустить флаг —php_executable_path=/usr/bin/php. Это не всегда требуется. Я начинаю думать, что это что-то конкретное о Centos или Vagrant, и Vagrant кажется более вероятным.

Ответ №1:

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

 dev_appserver.py --php_executable_path=/usr/bin/php --host=192.168.33.44 ./
  

Должно было быть

 dev_appserver.py --php_executable_path=/usr/bin/php-cgi --host=192.168.33.44 ./
  

Движку приложений требуется двоичный файл php-cgi, а не cli.Некоторое время назад я наткнулся на него в документах, но забыл вернуться сюда и опубликовать ответ

Комментарии:

1. Спасибо! это сложный вопрос, и, похоже, это единственный ответ, который я нашел в Интернете. Документация Google довольно скудная, следуя их руководству, почти наверняка окажется в опасности.