Проблема с app.yaml, переносящим существующее веб-приложение на механизм приложений Google

Я новичок в PHP и пытаюсь перенести веб-приложение, которое уже работает в Google App Engine. Я прочитал документы GAE о файле конфигурации, который мне нужно написать ( app.yaml )

Теперь я достиг точки, когда средство запуска обслуживает приложение, но «поток PHP» достигает совершенно пустой страницы, а не окна с некоторыми данными и формой, которую я ожидаю.

Каким образом я могу отлаживать этот PHP-поток, чтобы увидеть, что происходит неправильно?

Подробно это файлы, которые работают неправильно:

index.php в корневом каталоге:

<?php
    include_once('tao/install/init.php');
    if(!tao_install_utils_System::isTAOInstalled()){
    header("location:tao/install");
}
else{
    header("location:tao/Main/entry");
}
?>

Таким образом, файл init.php в tao/install будет называться первым запуском приложения.

<?php 
// -- Install bootstrap
$rootDir = dir(dirname(__FILE__).'/../../');
$root = realpath($rootDir->path) . DIRECTORY_SEPARATOR ;
define('TAO_INSTALL_PATH', $root);
define('GENERIS_PATH', $root.'generis/');
set_include_path(get_include_path() . PATH_SEPARATOR . $root. PATH_SEPARATOR . GENERIS_PATH);


function install_loader($class_name){
    foreach (array(TAO_INSTALL_PATH, GENERIS_PATH) as $dir) {
        $path = str_replace('_', '/', $class_name);
        $file =  'class.' . basename($path). '.php';
        $filePath = $dir . dirname($path) . '/' . $file;
        if (file_exists($filePath)){
            require_once  $filePath;
            break;
        }
        else{
            $file = 'interface.' . basename($path). '.php';
            $filePath = $dir . dirname($path) . '/' . $file;
            if (file_exists($filePath)){
                require_once $filePath;
                break;
            }
        }
    }
}

spl_autoload_register('install_loader');

common_log_Dispatcher::singleton()->init(array(
    array(
        'class'         => 'SingleFileAppender',
        'threshold'     => common_Logger::TRACE_LEVEL,
        'file'          => TAO_INSTALL_PATH.'tao/install/log/install.log',
)));
require_once (GENERIS_PATH.'vendor/autoload.php');
require_once ('tao/helpers/class.Display.php');
require_once ('tao/helpers/class.Uri.php');

?>

А это мой временный app.yaml

application: myapp
version: alpha-001
runtime: php
api_version: 1

handlers:
- url: /
  script: index.php

- url: /tao/install
  script: /tao/install/init.php

#- url: /stylesheets
#  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

ИЗМЕНИТЬ

Я думаю, мне нужно отредактировать app.yaml для:

require_once (GENERIS_PATH.'vendor/autoload.php');
require_once ('tao/helpers/class.Display.php');
require_once ('tao/helpers/class.Uri.php');

Но я не понял, как

ВТОРАЯ ПРАВКА

Это лог лаунчера GAE

2015-03-31 15:59:05 Running command: "['G:\\Python27\\python.exe', 'H:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=15080', '--admin_port=8007', u'F:\\davide\\tesi\\taov1']"
INFO     2015-03-31 15:59:07,522 devappserver2.py:726] Skipping SDK update check.
INFO     2015-03-31 15:59:07,611 api_server.py:172] Starting API server at: http://localhost:63287
INFO     2015-03-31 15:59:07,617 dispatcher.py:186] Starting module "default" running at: http://localhost:15080
INFO     2015-03-31 15:59:07,618 admin_server.py:118] Starting admin server at: http://localhost:8007
INFO     2015-03-31 16:09:54,970 module.py:737] default: "GET / HTTP/1.1" 302 -
INFO     2015-03-31 16:09:55,045 module.py:737] default: "GET /tao/install HTTP/1.1" 200 -
INFO     2015-03-31 16:09:55,207 module.py:737] default: "GET /favicon.ico HTTP/1.1" 404 -

person arcot    schedule 26.03.2015    source источник
comment
Если include_once('tao/install/init.php'); является правильным местоположением, вам нужно изменить свой файл yaml следующим образом - url: /tao/install script: tao/install/init.php Я считаю, что toa каталог находится внутри корня   -  person Sasi Varunan    schedule 26.03.2015
comment
Спасибо за интерес. Да, tao — это каталог внутри корня, но если я использую: — url: /tao/install script: tao/install/init.php вместо — url: /tao/install script: /tao/install/init.php, я получить такую ​​же ситуацию   -  person arcot    schedule 26.03.2015
comment
Можете ли вы развернуть его в версии, отличной от версии по умолчанию, и проверить там журналы?   -  person Sasi Varunan    schedule 26.03.2015
comment
Я даже не знаю, что такое версия не по умолчанию, где я могу прочитать об этом? Я нашел кое-что в документах Google для gae, но не в разделе PHP.   -  person arcot    schedule 26.03.2015
comment
Вы можете проверить это! вы можете изменить version: alpha-001 на version: alpha-test в файле app.yaml и развернуть. Затем перейдите в приложение движка приложения -- версия и щелкните гиперссылку alpha-test, затем вернитесь к журналам, выберите alpha-test и посмотрите, что происходит.   -  person Sasi Varunan    schedule 26.03.2015
comment
@SasiVarunan Я пытался развернуть его в GAE, но не могу, потому что для моего профиля слишком много файлов (ошибка 400: максимальное количество файлов и больших двоичных объектов составляет 10000).   -  person arcot    schedule 28.03.2015
comment
см. здесь и здесь   -  person Sasi Varunan    schedule 28.03.2015
comment
@SasiVarunan, спасибо, я очень ценю ваш интерес. Я отредактировал журнал в ответе, я получил его из средства запуска GAE, используемого для локального развертывания приложения. Я думаю, проблема в том, что эти три required_once(xxx) не реализованы в app.yaml.   -  person arcot    schedule 31.03.2015
comment
require_once не будет работать в app.yaml. Прочитайте cloud.google.com/appengine/docs/php/config/appconfig для получения дополнительной информации о синтаксисе. Судя по вашему журналу во ВТОРОМ РЕДАКТИРОВАНИИ, PHP-скрипты, обрабатывающие /tao/install, возвращали HTTP 200, который выполнялся без ошибок. Поместите несколько эхо-операторов в этот скрипт для дальнейшей отладки.   -  person Mars    schedule 02.04.2015


Ответы (1)


Я наконец нашел ответ. Проблема была в app.yaml, как сказал мне @Mars. Это правильная форма:

application: mytaov1
version: alpha-test
runtime: php
api_version: 1

handlers:
- url: /
script: index.php
- url: /tao/install
script: /tao/install/index.html

Путь include() не был необходим в app.yaml, как и путь required(). Позвонили и приняли без проблем.

person arcot    schedule 05.05.2015