2

我正在尝试将 PHP 应用程序迁移到 Google App Engine 基础架构,并且我有一段类似的代码可以处理会话:

 <html>
     <head>
         <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
     </head>
     <body>
             <?php
                 session_start();
             ?>
     </body>
 </html>

使用 GAE SDK 执行它时,我收到以下错误,并且会话不跟踪我之前设置的记录:

警告:file_get_contents():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在 C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php 第 92 行

警告:file_get_contents(http://localhost:63143):无法打开流:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在 C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php 第 92 行

注意:未定义的偏移量:0 在 C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\Memcache.php 行 564

我在php.ini文件中设置了以下值:

session.save_handler = user
session.save_path = Memcache

有人知道我是否需要设置一些缺少的配置才能使用会话?

编辑:

php.ini从项目文件夹中删除了文件,但仍然出现一些错误,最后一次没有出现 2 个不同的警告:

警告:file_get_contents():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在 C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php 第 92 行

警告:file_get_contents(http://localhost:50074):无法打开流:php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在 C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php 第 92 行

警告:session_start():无法发送会话 cookie - 标头已由(输出开始于 C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php:7)在 C:\Users\user\Downloads\ google_appengine_1.8.1\helloworld\helloworld.php 在第 8 行

警告:session_start():无法发送会话缓存限制器 - 标头已发送(输出开始于 C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php:7)在 C:\Users\user\Downloads\ google_appengine_1.8.1\helloworld\helloworld.php 在第 8 行

我在 Windows 7 Enterprise x64、php-5.4.13-Win32-VC9-x86 和 google_appengine_1.8.1 上运行。

4

5 回答 5

1

如果有人再次点击此页面,但此处的解决方案不起作用,但会出现“标头已发送”错误:

尝试另存为不带 BOM 的 UTF-8。这通常是一个空白错误,并且 BOM 通常被读取为在任何事情发生之前输出的字符。

于 2015-02-23T11:25:15.023 回答
0

GAE PHP 中的 Session 会自动存储在 memcache 中,您无需进行任何配置。

您能否删除您的 php.ini 文件并查看问题是否仍然存在?

于 2013-06-29T23:20:31.773 回答
0

看起来你可能发现了一个错误。具体来说,通过在 PHP.ini 中设置会话处理程序,PHP 解释器正在尝试直接通过网络访问 memcached 服务器,而不是 dev_appserver 提供的实现。

您是否介意在以下网址报告: https ://code.google.com/p/googleappengine/issues/list?q=label:Language-PHP&sort=-stars

此外,Google App Engine 实际上默认使用 Memcache 进行会话,如https://developers.google.com/appengine/docs/php/#Sessions中所述,无需任何自定义配置。

于 2013-06-29T23:23:41.633 回答
0

在使用 Google App Engine 部署我的应用程序时,我也遇到了 php session_start() 函数的问题;我收到以下警告:
警告:session_start():无法发送会话 cookie - 标头已由...发送

警告:session_start():无法发送会话缓存限制器 - 标头已发送...

我终于明白了,Google App Engine 会自动创建一个会话,所以你不需要自己创建一个。

继续在会话变量中保留您想要的任何内容,然后尝试在其他地方检索它。你不会有任何错误。

这里要记住的是,您不需要自己使用 session_start() 来启动会话,Google App Engine 已经启动了一个会话,因此您只需使用它即可。

于 2015-11-03T10:33:32.220 回答
0

实际上,错误是因为您应该从会话开始。
session_start() 必须是代码中的第一件事。
尝试这个:

<?php
  session_start();
?>
 <html>
     <head>
         <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
     </head>
     <body>

     </body>
 </html>
于 2018-08-16T15:54:30.510 回答