我正在尝试将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执行时,我收到以下错误,并且会话无法跟踪我之前设置的记录:
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php on line 92 Warning: file_get_contents(http://localhost:63143): failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php on line 92 Notice: Undefined offset: 0 in C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\Memcache.php on line 564
我在php.ini
文件中设置了以下值:
session.save_handler = user
session.save_path = Memcache
是否有人知道我需要设置一些缺少的配置才能使用会话?
编辑:
我从项目文件夹中删除了php.ini
文件,但仍然出现了一些错误,最后一次没有出现2种不同的警告:
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php on line 92 Warning: file_get_contents(http://localhost:50074): failed to open stream: php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\Users\user\Downloads\google_appengine_1.8.1\google_appengine\php\sdk\google\appengine\runtime\RemoteApiProxy.php on line 92 Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php:7) in C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php on line 8 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php:7) in C:\Users\user\Downloads\google_appengine_1.8.1\helloworld\helloworld.php on line 8
我在Windows 7 Enterprise x64,php-5.4.13-Win32-VC9-x86和google_appengine_1.8.1上运行。
答案 0 :(得分:1)
如果有人再次点击此页面,但此处的解决方案无效,但是已经发送了#34;标题已经发送了#34;错误:
尝试在没有BOM的情况下保存为UTF-8。这通常是一个空格错误,而BOM通常被读作一个在发生任何事情之前输出的字符。
答案 1 :(得分:0)
GAE中的会话PHP自动存储在memcache中,您无需配置任何内容。
你可以删除你的php.ini文件,看看问题是否仍然存在?
答案 2 :(得分:0)
看起来你可能发现了一个错误。具体来说,通过在PHP.ini中设置会话处理程序,PHP解释器试图直接通过网络而不是dev_appserver提供的实现来访问memcached服务器。
你介意报道: 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中所述,无需任何自定义配置。
答案 3 :(得分:0)
在使用Google App Engine部署我的应用程序时,我还遇到了php session_start()函数的问题;我有以下警告:
警告:session_start():无法发送会话cookie - 已经由...发送的标题
警告:session_start():无法发送会话缓存限制器 - 已发送的标头...
我终于明白Google App Engine会自动创建一个会话,因此您不需要自己创建会话。
只需继续并在会话变量中保留您想要的任何内容,并尝试在其他地方检索它。你不会有任何错误。
这里需要记住的是,您不需要自己使用session_start()启动会话,其中一个已经由Google App Engine启动,因此您只需使用它。
答案 4 :(得分:0)
实际上,该错误是因为您应该在会话之前开始。
session_start()必须是代码中的第一件事。
试试这个:
<?php
session_start();
?>
<html>
<head>
<link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
</head>
<body>
</body>
</html>