我正在尝试将我的应用迁移到Google App Engine php7.2。主要问题是,会话存储在Memcache中。但是我需要更一致的会议。
我找到了一个很好的Repo,它可以解决问题https://github.com/tomwalder/php-gds-session,但是在安装和包含后会引发错误。
错误:找不到类“ google \ appengine \ datastore \ v4 \ LookupRequest” 在GDS \ Gateway \ ProtoBuf-> fetchByKeyPart(/srv/vendor/tomwalder/php-gds/src/GDS/Gateway/ProtoBuf.php:179) 在GDS \ Gateway-> fetchByNames(/srv/vendor/tomwalder/php-gds/src/GDS/Gateway.php:194) 在GDS \ Gateway-> fetchByName(/srv/vendor/tomwalder/php-gds/src/GDS/Gateway.php:122) 在GDS \ Store-> fetchByName(/srv/vendor/tomwalder/php-gds/src/GDS/Store.php:184) 在GDS \ Session \ Handler->读取(/srv/vendor/tomwalder/php-gds-session/src/GDS/Session/Handler.php:176) 在session_start([内部功能]) 在GDS \ Session \ Handler :: start(/srv/vendor/tomwalder/php-gds-session/src/GDS/Session/Handler.php:105) 在{main}(/srv/bootstrap.php:12)
有人可以帮忙吗?
我的composer.json:
"require": {
"php": ">=5.3.0",
"google/cloud-logging": "^1.16",
"google/cloud-error-reporting": "^0.14.4",
"google/cloud-storage": "^1.12",
"google/cloud-datastore": "^1.9",
"monolog/monolog": "^1.24",
"league/flysystem-sftp": "^1.0",
"aws/aws-sdk-php": "^3.94",
"vlucas/phpdotenv": "^3.3",
"php-http/guzzle6-adapter": "^1.1",
"bugsnag/bugsnag": "^3.16",
"mailgun/mailgun-php": "~2.0",
"paragonie/random_compat": "<9.99",
"tomwalder/php-gds-session": "v1.0.0",
"google/apiclient": "^2.2"
}
在bootstrap.php上
// Fix for finding Application-ID on GAE
if(!isset($_SERVER['APPLICATION_ID'])){
$_SERVER['APPLICATION_ID'] = $_SERVER['GAE_APPLICATION'];
}
GDS\Session\Handler::start();
答案 0 :(得分:0)
您可以尝试将php-gds-session代码从use GDS\Gateway\ProtoBuf;
更改为use GDS\Gateway\RESTv1
;和new Store($this->createSchema(), new ProtoBuf());
至new Store($this->createSchema(), new RESTv1());
答案 1 :(得分:0)
我是PHP-GDS的作者。失败的原因是新的PHP 7.x运行时没有相同类型的ProtoBuf支持。
REST替代方法应该起作用。
我将看一下该库,看看是否可以提供支持REST网关的版本。