我的PHP代码与我的计算机上的应用程序相同,但它在服务器上不起作用。在服务器上,会话变量不会在页面之间保留其值。我曾联系过网络托管公司,他们坚持认为这是一个编码问题。但我似乎无法找到我的代码有什么问题;毕竟,它们在我的电脑上运行得非常好。
为简化代码,我设置了两个测试页面以查看正在进行的操作。
page1.php中
<?php
$timeout = 1440;
ini_set('session.gc_maxlifetime', $timeout);
session_name("admin");
session_start();
$_SESSION['var1'] = "asdfasdf";
echo session_id() . "<br>" . $_SESSION['var1'];
?>
<a href="page2.php">Page 2</a>
使page2.php
<?php
session_name("admin");
session_start();
if (isset($_SESSION['var1'])) {
echo session_id() . "<br>" . $_SESSION['var1'];
} else {
echo session_id() . "<br> NOT exist.";
}
?>
<a href="page1.php">Page 1</a>
在我的计算机上,当我运行page1.php时,它会显示会话ID的值,然后将$ _SESSION [&#39; var1&#39;]的值显示为asdfasdf。我点击了第2页,它在屏幕上显示相同的值。但是,在服务器上,当我运行page1.php时,它会显示会话ID的值,然后将$ _SESSION [&#39; var1&#39;]的值显示为asdfasdf。我点击了第2页。它显示了相同的会话ID,但它显示了&#34; NOT Exist&#34;意思是$ _SESSION [&#39; var1&#39;]不存在。
在page2.php上,我尝试添加error_reporting(E_ALL),但是网络托管服务器抛出500错误。他们似乎不允许更改错误报告的级别。
我在计算机和服务器上显示phpinfo。我能看到的唯一主要区别是我运行的是PHP 5.5,服务器有php 5.4。这可能是服务器不保留会话变量值的原因吗?如果是这样,我该如何纠正?
如果您想亲自查看行为,请转到page1,然后点击页面上的第2页,查看我在说什么。您还可以转到Server PHP info
查看服务器上的php信息