2017-08-01 98 views
0

我遇到了一個問題,我無法在運行LAMP的AWS EC2實例上設置cookie。Cookie不工作在PHP aws

我有兩個簡單的頁面,cookie.php和show_cookie.php:

cookie.php

<?php 
setcookie('test', 'test', time()+36000, '/'); 
?> 
<a href="show_cookie.php">show me the cookies!</a> 

show_cookie.php

<?php 
print_r($_COOKIE); 
?> 
<a href="cookie.php">go back</a> 

當我瀏覽到Chrome中的cookie.php並點擊鏈接,頁面會回顯一個空數組。另外,如果我檢查Cookies,那裏什麼也沒有。

我使用Apache/2.4.25(Amazon)運行PHP 7.0.16。這是很奇怪的行爲。有沒有人遇到過類似的問題,以正確的方向指向我?

+0

林不知道,但也許這個問題可以幫助你:https://stackoverflow.com/questions/29564984 – Spingolini

+0

@Spingolini - 謝謝你指出,但我確實看到了這個問題。看起來這個人有一個稍微不同的問題,他在跨域使用Cookie時遇到了麻煩。 –

回答

0

在我所有使用Cookie的經驗中,我總是把$_SERVER['SERVER_NAME']作爲第五個參數。我不相信你必須定義$ _Server。我相信它是在執行過程中定義的。如果不是,您可能必須將其定義爲您的域或IP地址。

setcookie("userid",$global['user-id'],time()+3600*2,'/',$_SERVER['SERVER_NAME']); 

這是$ _Cookies的PHP指南的鏈接。 http://php.net/manual/en/function.setcookie.php

這是$ _Server的PHP指南的鏈接。 http://php.net/manual/en/reserved.variables.server.php

域:

(子)域該cookie可用來。將此設置爲 子域(如「www.example.com」)將使該Cookie可用 到該子域及其所有其他子域(即 w2.www.example.com)。要使Cookie可用於整個域 (包括其所有子域),只需將該值設置爲域名 名稱(在本例中爲'example.com')。