2013-06-28 39 views
2

我試圖遷移一個PHP應用程序谷歌App Engine的基礎設施建設我有一個類似一塊是處理會話代碼:PHP會議

<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

錯誤是,它無法找到或打開'localhost:63143' - 可能是本地主機的安全測量。 –

回答

0

GAE中的會話PHP自動存儲在memcache中,不需要進行任何配置。

你可以刪除你的php.ini文件,看看問題是否存在?

+0

我從我的項目文件夾中刪除了php.ini文件,但運行時仍然出現一些錯誤。 – Eduardo

0

看起來你可能已經發現了一個錯誤。具體來說,它看起來像通過在PHP.ini中設置會話處理程序,PHP解釋程序正試圖直接通過網絡訪問memcached服務器,而不是由dev_appserver提供的實現。

你不介意在報告吧: https://code.google.com/p/googleappengine/issues/list?q=label:Language-PHP&sort=-stars

此外,谷歌App Engine的實際使用內存緩存的默認會話作爲沒有任何自定義配置中https://developers.google.com/appengine/docs/php/#Sessions描述。

+0

即使在從我的項目文件夾中刪除php.ini文件後,session_start()仍然無法正常工作,也許設置處理程序不是主要問題。 – Eduardo

1

如果有人在此頁EVER再次命中,但這裏的解決方案不工作,但得到了「頭已經發送」錯誤:

嘗試保存爲UTF-8無BOM。這通常是一個白色空間錯誤,BOM通常被讀作是在任何事情發生之前輸出的字符。

+0

保存爲UTF-8? 什麼是BOM? – eurobob

+0

你的源代碼文件必須保存爲不含BOM的UTF-8(例如notepad ++可以爲你做,也可以是大多數IDE)。至於BOM,這是一個字節順序標記,在這裏閱讀更多關於它的信息:https://en.wikipedia.org/wiki/Byte_order_mark –

0

我在使用Google App Engine部署我的應用程序時,也遇到了php session_start()函數的問題;我有以下警告:
警告:在session_start():不能發送會話cookie - 已經由...

警告發送標題:在session_start():不能發送會話緩存限制器 - 頭已經發出...

我終於明白Google App Engine會自動創建一個會話,所以你不需要自己創建一個會話。

只要繼續並在會話變量中保留任何想要的內容,並嘗試將其檢索到其他位置。你不會有任何錯誤。

這裏要記住的是,您不需要使用session_start()自己啓動會話,其中一個已經由Google App Engine啓動,因此您只需使用它。